Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Dostęp do zmiennej z innej klasy
Forum PHP.pl > Forum > Przedszkole
grind
Ażeby nie rozwlekać zbytnio tematu:
  1. <?php
  2. class test1
  3. {
  4. public $testt="";
  5. function test1()
  6. {
  7. echo $this ->testt;
  8. }
  9. }
  10.  
  11. class test2
  12. {
  13. public $test1;
  14. function __construct()
  15. {
  16. $this -> test1 = new test1;
  17. }
  18.  
  19. function test2($msg)
  20. {
  21. $this -> test1 -> testt = $msg;
  22. }
  23. }
  24.  
  25. $test1=new test1;
  26. $test2=new test2;
  27.  
  28. $test2 -> test2('Test test!');
  29. $test1 -> test1();
  30. ?>


Problem w tym, że funkcja test2 nie zmienia zmiennej testt. Czytałem trochę w manualu, na wikibooks i googlu, i niestety nic nie mogłem znaleźć (albo słabo szukałem). Problem jest pewnie denny i można go rozwiązać w kilka sekund.

Z góry dziękuję za pomoc.
Dominis
tak naprawde tworzysz trzy osobne obiekty.

Jeden obiekt test1, drugi obiekt test2 i trzeci obiekt w klasie test2(w konstruktorze) o nazwie test1.
i twoja funkcja test2 zmienia zmenna testt tylko ze w obiekcie stworzonym w klasie test2, a ty probujesz to odczytac w obiekcie stworzonym test1(ten pierwszy nie w klasie test2)

Jesli chcesz odczytac to możesz zrobić tak:

  1. <?php
  2. class test1
  3. {
  4. public $testt="";
  5. function test1()
  6. {
  7. echo $this ->testt;
  8. }
  9. }
  10.  
  11. class test2
  12. {
  13. public $test1;
  14. function __construct()
  15. {
  16. $this -> test1 = new test1;
  17. }
  18.  
  19. function test2($msg)
  20. {
  21. $this -> test1 -> testt = $msg;
  22. }
  23.  
  24. public function getTestt(){
  25. return $this->test1->testt;
  26. }
  27. }
  28.  
  29. $test1=new test1;
  30. $test2=new test2;
  31.  
  32. $test2 -> test2('Test test!');
  33. echo $test2 -> getTestt();
  34. ?>
grind
A jest możliwość wysłania z kilku klas do jednej zmiennej informacji, tak żeby móc przechowywać wszystko w jednym miejscu ?
( np. informacje o błędach użytkownika).
Daiquiri
Nie za bardzo rozumiem co chcesz zrobić. Niemniej jednak, możesz przecież pobierać i ustawiać zmienne w klasach za pomocą metody typu set/get. Nie musisz również tworzyć instancji obiektów, wewnątrz innych obiektów (jak dla przykładu pokazał Dominis), możesz je zwyczajnie wstrzyknąć, za pomocą stworzonej metody czy konstruktora.

Łatwiej będzie jak rozwiniesz myśl "wysłania z kilku klas do jednej zmiennej informacji" smile.gif.
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.