Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Funkcja __get
ksiadz
post
Post #1





Grupa: Zarejestrowani
Postów: 39
Pomógł: 0
Dołączył: 24.11.2003

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


Witam
Po przeskoczeniu z php4 na "piatke" i dokladnemu przestudiowaniu mowych mozliwosci ( nie bylo tego za wiele (IMG:http://forum.php.pl/style_emoticons/default/dry.gif) ) dostrzeglem pewne niejasnosci z ktorymi nie moge sie uporac (IMG:http://forum.php.pl/style_emoticons/default/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?
Go to the top of the page
+Quote Post
Ozzy
post
Post #2





Grupa: Zarejestrowani
Postów: 204
Pomógł: 0
Dołączył: 26.12.2003
Skąd: Rzeszów

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


Zmienna $n istnieje, a _get wywoływane jest tylko wtedy gdy zmienna NIE istnieje.
Go to the top of the page
+Quote Post
ksiadz
post
Post #3





Grupa: Zarejestrowani
Postów: 39
Pomógł: 0
Dołączył: 24.11.2003

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


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 (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) , BIG THX
Go to the top of the page
+Quote Post

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: 22.08.2025 - 16:00