Problem: dziedziczenie i poprawne funkcjonowanie metod magicznych __get i __set w klasach potomnych
<?php class person { public function __construct() { } public function __get($name) { return $this->{$name}; } } class driver extends person { private $imie; public function __construct() { } public function setImie($val) { $this->imie = $val; } public function __get($name) { parent::__get($name); } } $a = new person; $b = new driver; $b->setImie('jasio'); ?>
Powyzszy kod nie wyswietli poprawnie wlasnosci imie z klasy potomnej. Po pierwsze dlatego, ze jest ona zadeklarowana, jako prywatna. Nie zadziala rowniez, gdy ustawimy ja na publiczna lub chroniona, gdyz w tym wypadku parent:: nie dziala jak w konstruktorze i __get bedzie (chyba) probowal szukac wlasnosci w klasie macierzystej.
Wniosek: z klasie potomnej zrezygnowac nadpisywania czesciowego, a wlasnosci zadeklarowane powinny byc na publiczne lub prywatne
Jezeli sie myle, prosze o poprawe. Chcialem skorzystac z magicznych metod dostepowych __get i __set i dziedziczyc je z modelu bazowego (klasy macierzystej) w modelach konkretnych (klasy potomne) w MVC, ale wyglada na to, ze bedzie trzeba je powielac.