Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Klasy, dziedziczenie, etc
untorched
post
Post #1





Grupa: Zarejestrowani
Postów: 318
Pomógł: 76
Dołączył: 27.12.2011
Skąd: Dąbrowa Górnicza

Ostrzeżenie: (0%)
-----


Cześć.
Mam mały problem z takim przypadkiem(singleton)
  1. class Rodzic {
  2.  
  3. private static $instance = NULL;
  4.  
  5. private function __construct() { }
  6.  
  7. static function GetInstance()
  8. {
  9. if(self::$instance == NULL)
  10. {
  11. $name = (IMG:style_emoticons/default/questionmark.gif) ; // Nazwa klasy dziecka. Jak pobrać?
  12. self::$instance = new $name;
  13. }
  14.  
  15. return self::$instance;
  16. }
  17.  
  18. };
  19.  
  20. class Dziecko extends Rodzic {
  21.  
  22. public function Test()
  23. {
  24. }
  25.  
  26. };
  27.  
  28. Dziecko::GetInstance()->Test();


Potrzebuje takiego rozwiązania, aby w tym wpadku rodzic dowiedział się o nazwie klasy dziecka.
Czy jedynym rozwiązaniem jest dopisywać w klasie dziecka do zmiennej $name(w klasie rodzica) nazwę klasy dziecka?
Czy można jakoś zrobić z automatu?

Proszę o pomoc (IMG:style_emoticons/default/tongue.gif) Zapomniałem już jak się programuje ; o
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
Crozin
post
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Dla PHP 5.3+
  1. self::$instance = new static();


Cytat
Zapomniałem już jak się programuje ; o
Jeżeli chcesz korzystać z singletona i w dodatku tworzyć klasę nadrzędną, której celem jest jedynie implementacja singletona, to rzeczywiście mogłeś zapomnieć.
Go to the top of the page
+Quote Post
untorched
post
Post #3





Grupa: Zarejestrowani
Postów: 318
Pomógł: 76
Dołączył: 27.12.2011
Skąd: Dąbrowa Górnicza

Ostrzeżenie: (0%)
-----


Nie jest to jedyny cel. Chciałem tylko uzyskać z automatu singletona, aby nie przepisywać go do każdej mojej klasy.
Fakt jest taki, że rzeczywiście, moja wiedza dot. programowania w PHP strasznie zubożała przez prawie półroczny brak
kontaktu z programowaniem, lecz właśnie mam na celu przypomnienie sobie paru cennych rozwiązań lub wręcz nauczenia
nowych (IMG:style_emoticons/default/smile.gif) Dzięki wielkie za pomoc, poleciał "pomógł" (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
Crozin
post
Post #4





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Cytat
lecz właśnie mam na celu przypomnienie sobie paru cennych rozwiązań lub wręcz nauczenia nowych
Singleton w zdecydowanej większości przypadków nie zalicza się do "cennych rozwiązań". Nie chcę już powtarzać tego co zostało napisane tyle razy, tak więc jedynie odeślę do Google'a: singletons are evil. Powinieneś bez problemu znaleźć całą listę wad związanych z jego błędnym* użyciem, oraz alternatywne rozwiązanie w postaci IoC.

* są sytuacje, gdzie użycie singletona ma sens, ale są bardzo, bardzo rzadkie.

Ten post edytował Crozin 25.06.2012, 01:36:50
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.08.2025 - 08:13