Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Funkcja __get
Forum PHP.pl > Forum > PHP > Object-oriented programming
ksiadz
Witam
Po przeskoczeniu z php4 na "piatke" i dokladnemu przestudiowaniu mowych mozliwosci ( nie bylo tego za wiele dry.gif ) dostrzeglem pewne niejasnosci z ktorymi nie moge sie uporac dry.gif min. z funkcja __get w klasie. Przypuscmy ze mam taki oto kod
  1. <?php
  2.  
  3. class test
  4. {
  5.  public $n = &#092;"tekst\";
  6.  public $x = array( 'a' => 1, 'b' => 2, 'c' => 3 );
  7.  
  8.  
  9.  function __get( $var )
  10.  {
  11. print &#092;"pobieranie $this->$var<br />\";
  12.  
  13. if( isset( $this->$var ) )
  14. {
  15.  $r = $this->$var;
  16.  print &#092;"zwracanie: $r<br />\";
  17.  return $r;
  18. }
  19. else
  20. {
  21.  print &#092;"blad!<br />\";
  22. }
  23.  }  
  24. }
  25.  
  26. $foo = new test();
  27. $foo->n;
  28. ?>

Przypuszczalem ze wynikiem takiego kodu bedzie po prostu:
Kod
pobieranie $this->n
zwracanie: tekst

ale tak nie jest :/ - funkcja __get jest wywolywana tylko wtedy gdy nastapi proba pobrania niezdefiniowanej zmiennej np $this->zmienna czego wynikiem bedzie
Kod
pobieranie $this->zmienna
blad!

wiec moje pytanie brzmi dlaczego? czy cos w kodzie jest zle napisane?
Ozzy
Zmienna $n istnieje, a _get wywoływane jest tylko wtedy gdy zmienna NIE istnieje.
ksiadz
Cytat(Ozzy @ 2004-08-06 18:11:31)
Zmienna $n istnieje, a _get wywoływane jest tylko wtedy gdy zmienna NIE istnieje.

no i wszystko jasne - z mojego zrodla wiedzy nic nie bylo wspominane ze __get jest wywolywane tylko wtedy gdy zmienna NIE istnieje dlatego nie wiedzialem co robie zle winksmiley.jpg, BIG THX
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.