![]() |
![]() |
--JacekP-- |
![]()
Post
#1
|
Goście ![]() |
Witam
Mam pytanie, jak rozwiązać sprawę $_instance w klasie rodzica ? Stworzyłem znaną wszystkim funkcję : <code=php> private static $_instance; public static function instance() { if(!isset(self::$_instance)){ self::$_instance = new static(); } return self::$_instance; }</code> Teraz każda klasa która dzedziczy po tej klasie ma funkcję instance, problem jednak pojawił się taki że $_instance przyjmuje wartość pierwszej stworzonej klasy którą zainicjuję tą funkcją, wydaje mi się to błędnym działaniem, zmienna $_instance mimo że statyczna powinna być statyczną dla klasy która dziedziczy po tej, Jak rozwiązać ten problem, czy mogę usunąć static, wtedy będą się za każdym razem tworzyć się nowe kopie dla każdej klasy i funkcja straci sens :/ |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Cytat Jeśli chodzi o to po co mi to, to mam dużo klas które muszą być dostępne z dowolnego miejsca w kodzie np. klasa która zbiera logi. No to obiekt zbierający logi to świetny przykład tego, że użycie Singletona będzie błędem. Już dużo lepszym rozwiązaniem będzie skorzystanie z normalnego globala.Google: Dependency Injection oraz Dependency Injection Container - od dekad* znane, dobre rozwiązanie Twojego problemu. A Singletona nie używa się tam gdzie potrzebujesz globalnego dostępu do czegoś. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 17.10.2025 - 01:05 |