Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Zmienne z metody
Forum PHP.pl > Forum > Przedszkole
Ferek
  1. <?php
  2.  
  3. class Test
  4. {
  5. public $but;
  6. public function kozak($pary){
  7. return $this->but = $pary*2;}
  8. }
  9.  
  10. $test = new Test;
  11. echo $test->kozak(6);
  12. echo $test->but;
  13. ?>


Witam, da się jakoś zrobić tak, żebym nie musiał dodawać public $but; tylko tak jak na dole, i żeby zmienna $but była widoczna ? bo tak dodawać wszystko to trochę bez sensu... jak mam coś z tej funkcji wyświetlać w innym pliku a nie chcę mieszać php z html-em tylko zmienne przekazywać to za każdym razem public ....

  1. <?php
  2.  
  3. class Test
  4. {
  5. public function kozak($pary){
  6. return $but = $pary*2;}
  7. }
  8.  
  9. $test = new Test;
  10. echo $test->kozak(6);
  11. echo $test->but;
  12. ?>
Daimos
Masz przykład ze stackoverflow:
  1. class test{
  2.  
  3. private $data;
  4.  
  5. public function __get($varName){
  6.  
  7. if (!array_key_exists($varName,$this->data)){
  8. //this attribute is not defined!
  9. throw new Exception('.....');
  10. }
  11. else return $this->data[$varName];
  12.  
  13. }
  14.  
  15. public function __set($varName,$value){
  16. $this->data[$varName] = $value;
  17. }
  18.  
  19. }
  20. // wykorzystanie:
  21.  
  22. $t = new test();
  23. $t->var1 = 'value';
  24. $t->foo = 1;
  25. $t->bar = 555;
  26. echo $t->bar;
  27. //a to powinno zwrócić błąd, bo nie ma takiej zmiennej:
  28. $t->someVarname;
Ferek
Nie rozumiem tego kodu o.O co to są metody __set i __get, których w tutku, który czytałem wykorzystywało się tylko do nieistniejących zmiennych etc..
Mi chodzi poprostu o swobodne wyświetlanie zmiennych z metody...
Turson
Z Twojego posta wynika, że nie chcesz tworzyć własności klasy za każdym razem i ma być dynamicznie tworzone, więc właśnie po to zostały zaproponowane metody magiczne __get() i __set()
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.