Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: __set() obiekty
Forum PHP.pl > Forum > PHP
sentes
Chcialem żeby tylko po wpisaniu $kot->itsdzien sie cos zmienialo ale jak wpisze $kot->itslata = 5; to zmienia. Co jest zle??
  1. <?php
  2. class cat
  3. {
  4.  var $itslata;
  5.  var $itsdzien;
  6.  function __construct($lata)
  7.  {
  8.  $this->itslata = $lata;
  9.  }
  10.  function __destruct()
  11.  {
  12.  echo "Koniec obiektu<br>";
  13.  }
  14.  function __get($zmienna)
  15.  {
  16.  return $this->$zmienna;
  17.  }
  18.  function __set($nazwa, $wartosc)
  19.  {
  20. if($nazwa == 'itsdzien') $this->$nazwa = $wartosc;
  21. }
  22. }
  23. $kot = new cat(1111);
  24. echo $kot->itslata."<br>";
  25. $kot->itslata = 5;
  26. echo $kot->itslata."<br>";
  27. ?>
tiraeth
PHP5 i private, poszukaj w Manualu informacji na temat typów zmiennych w klasach ewentualnie na phpedia.pl
FiDO
Dodam jeszcze, że funkcja magiczna __set() jest wywoływana tylko i wyłącznie dla pól, które w klasie nie istnieją. U ciebie istnieje i $itslata i $itsdzien, więc dla przyspisania żadnego z tych pól nie zostanie wywołana funkcja __set().
sentes
Dzieki ;]
hwao
http://hwao.be/blog/2006/05/02/monitorowanie-obiektu/
Tez masz opis magicznych metod
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.