![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 331 Pomógł: 1 Dołączył: 23.05.2004 Skąd: Tarnów/Londyn Ostrzeżenie: (0%) ![]() ![]() |
witam
mam następujacą sytuacje: jest klasa abstrakcyjna : abstract class lokal() i jej klasa potomna class lokal_xml extends lokal() w klasie potomnej mam zdefiniowana metode public function createXML() a w konstruntorze klasy potomnej wywoluje konstruktor rodzica : parent::construct($lokal_id); dziwna wydaje mi sie rzecz, ze jesli do konstruktora klasy rodzica, dodam wywolanie $this->createXML(), to php nie zglasza zadnego bledu. wydaje mi sie ze powinno, poniewaz wywoluje metode, ktora jest zadeklarowana i zdefiniowana dopiero w klasie potomniej. jesli sie myle to prosze o wytlumaczenie o co chodzi. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 4 465 Pomógł: 137 Dołączył: 26.03.2004 Skąd: Gorzów Wlkp. ![]() |
Ja nie widzę w tym nic dziwnego.
Kiedy w konstruktorze klasy potomnej wywołasz parent::__construct otrzymasz w pełni skonstruowany obiekt. Jeśli tego nie zrobisz - otrzymujesz obiekt częściowo skonstruowany. Podobno w następnych wersjach konstruktor w klasie bazowej ma być wywoływany automatycznie. Wracając do wywołania metody klasy pochodnej z klasy bazowej: Kiedy zostanie utworzona instancja klasy, nie ma podziału na klasę bazową i potomną - mamy jeden obiekt, który zawiera wszystkie metody z wyjątkiem metod prywatnych klasy bazowej. Zatem odwołanie się do metody należącej przy deklarowaniu do klasy pochodnej nie ma związku z kolejnością tejże deklaracji. Osobiście korzystam podobnych schematów, bo ograniczają ilość powtórzonego kodu, zwłaszcza, jeśli istnieje duża ilość klas pochodnych. Pozdrawiam. P.S Przyłączam się do prośby kolegów : ) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 18.10.2025 - 13:29 |