![]() |
![]() |
![]() ![]()
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: Zarejestrowani Postów: 793 Pomógł: 32 Dołączył: 23.11.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Mimo wszystko kompilator powinien ostrzec co najmniej, bo jeśli w tej klasie abstrakcyjnej była by zadeklarowana funkcja abstrakcyjna o nazwie createXML to już by nie było by kłopotu.
A co do konstruktora, to może lepsze by było takie rozwiązanie jak w Java tzn. jeśli klasa potomna nie ma konstruktora o danych parametrach (php akurat na to nie zwraca uwagi, tak wnioskuję ale nie testowałem) to wywołuje konstruktora klasy z której dziedziczy. P.S. @Cysiaczek może powinieneś robić to co napisałem (jeśli nie robisz) to znaczy tworzyć abstrakcje aby zabezpieczyć się, że klasa pochodnia będzie miała tą metodę. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 11.10.2025 - 13:07 |