Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Metody magiczne __set i __get
Forum PHP.pl > Forum > Przedszkole
Matado
Nie mogę do końca zrozumieć kiedy wykorzystywać metody __set() i __get(). Wiem, że set() służy do przypisania wartości pola, którego nie ma w obiekcie, get(0 do odczytu tego pola.

Gdzie można te metody wykorzystać w praktyce?
Fifi209
Możesz uzyskać dostęp do zmiennych np. private czy protected, ale dla mnie to tylko wygoda.
  1.  
  2. class test {
  3.  
  4. private $tablica = array('klucz' => true, 'klucz2' => 666);
  5. private $innaZmienna = false;
  6.  
  7. public function __get($name) {
  8. if (array_key_exists($name, $this->tablica)) {
  9. return $this->tablica[$name];
  10. }else{
  11. // tutaj np. wyjątkiem możesz pluć
  12. }
  13. }
  14. }
  15.  
  16. $test = new test();
  17.  
  18. echo $test->klucz; // zamiast $test->tablica['klucz'] - które i tak wywołałoby błąd w tym przypadku.
Mephistofeles
Nie tylko wygoda, np. w obiekcie jakiegoś ORMa można dzięki temu zapisać które pola zostały zmodyfikowane i zapisać w bazie tylko te potrzebne.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.