Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Dostęp do zmiennej z innej klasy, OOP
grind
post
Post #1





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 17.11.2011

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


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.
Go to the top of the page
+Quote Post
Dominis
post
Post #2





Grupa: Zarejestrowani
Postów: 77
Pomógł: 19
Dołączył: 13.02.2010

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


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. ?>


--------------------
www.maxcode.pl
Go to the top of the page
+Quote Post
grind
post
Post #3





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 17.11.2011

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


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).
Go to the top of the page
+Quote Post
Daiquiri
post
Post #4





Grupa: Administratorzy
Postów: 1 552
Pomógł: 211
Dołączył: 7.07.2009
Skąd: NJ




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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 03:13