Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] instancja dla kilku klas?
Forum PHP.pl > Forum > Przedszkole
asdad
Mam taki kod


  1. private static $instance;
  2.  
  3. public static function getInstance()
  4. {
  5. if(!self::$instance instanceof self)
  6. {
  7. self::$instance = new self;
  8. }
  9.  
  10. return self::$instance;
  11. }


I umieszczam go w kilku klasach, nie podoba mi się to ponieważ jest on powielany, a nie będę przecież wczytywał go w każdej klasie przez include, czy jest jakiś inny sposób, aby każda klasa korzystała z tego kodu, a on sam żeby się w nich nie powtarzał?
Fifi209
To ma być singleton, tak?
Gość
Tak. Chyba że znasz jakiś inny spsoób, aby nie powielać tego kodu w każdej klasie, ale żeby możnabyło odwołać się przez NAzwaKlasy::getInstance
Fifi209
Napisz lepiej jakie to klasy, do czego mają służyć i dlaczego singleton wink.gif
Gość
Są to klasy Uri, Router czy Config ... nie ma potrzeby aby były wykonywane przez new Klasa, więc potrzeba tylko 1 instanicji. Każda z tych klas ma w sobie powyższy kod i pytanie czy on musi tam być czy nie da się tego jakoś 'dziedziczyć'
Gość
NIkt nie wie?
Adi32
Singletona używa się gdy potrzebujesz wyłącznie jednej instancji całego (a przynajmniej więcej niż jednej metody) obiektu danej klasy na cały kod. Jeżeli chcesz mieć dostęp do metody za pomocą obiekt::metoda() wystarczy użyć metody statycznej.

W odpowiedzi na Twoje pytanie: nie nie musisz wklejać tego kodu do każdej klasy, ale z założenia tak właśnie robi się prawidłowo (anty)wzorzec singleton.
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.