Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Klasy, dziedziczenie, etc
Forum PHP.pl > Forum > Przedszkole
untorched
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 = 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. echo 'Yeah! Nice haha.gif';
  25. }
  26.  
  27. };
  28.  
  29. 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 tongue.gif Zapomniałem już jak się programuje ; o
Crozin
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ć.
untorched
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 smile.gif Dzięki wielkie za pomoc, poleciał "pomógł" smile.gif
Crozin
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.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.