![]() |
![]() |
--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: 623 Pomógł: 79 Dołączył: 16.01.2008 Ostrzeżenie: (0%) ![]() ![]() |
Też miałem ten problem w związku z tym, że trochę za dużo lat spędziłem nad c++. Tam domyślnie klasa rodzic widzi tylko zmienne i funkcje zdefiniowane tylko w tejże klasie (wyjątkiem są zdefiniowane explicitly jako funkcje wirtualne).
Dużo czasu minęło zanim naumiałem się filozofii php - tu w klasie rodzica masz domyślnie dostęp do zmiennych i funkcji zdefiniowanych w klasie dziecka. Właśnie dlatego ci co znają tylko php mogą mieć problem ze zrozumieniem Twojego pytania i jego sensu. Spójrz na to:
Wypluje 'kaczka', rozumiesz? Twój singleton może spokojnie zwracać instancję klasy rodzica i to jest ok w php. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 9.10.2025 - 12:09 |