Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Dziedziczenie __get i __set, Czy jest mozliwe ?
Reigon
post
Post #1





Grupa: Zarejestrowani
Postów: 33
Pomógł: 0
Dołączył: 19.10.2004

Ostrzeżenie: (0%)
-----


Mialem napisac pytanie, ale wlasciwie troche potestowalem i napisze solucje (moze komus sie przyda i zaoszczedzi troche czasu)
Problem: dziedziczenie i poprawne funkcjonowanie metod magicznych __get i __set w klasach potomnych
  1. <?php
  2. class person
  3. {
  4. public function __construct()
  5. {
  6. echo 'ok. person!';
  7. }
  8. public function __get($name)
  9. {
  10.  return $this->{$name};
  11. }
  12. }
  13. class driver extends person
  14. {
  15.  private $imie;
  16. public function __construct()
  17. {
  18. echo 'ok. driver!';
  19. }
  20. public function setImie($val)
  21. {
  22.  $this->imie = $val;
  23. }
  24. public function __get($name)
  25. {
  26.  parent::__get($name);
  27. }
  28. }
  29.  
  30. $a = new person;
  31. $b = new driver;
  32. $b->setImie('jasio');
  33.  
  34. echo $b->imie;
  35. ?>


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.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 28.09.2025 - 01:37