Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Wartość zmiennej z klasy do klasy
Forum PHP.pl > Forum > Przedszkole
Takuro
Witam, mam przykładowo klasę:
  1. class Test1
  2. {
  3. public $txt;
  4.  
  5. public function TestowaMetoda()
  6. {
  7. //łacze sie z bazą i pobieram dane...
  8. $txt = mysql_fetch_assoc($wyniki);
  9. }
  10. }


Potem mam drugą klase Test2
  1. class Test2 extends Test1
  2. {
  3. //tutaj jakies deklaracje i metody
  4. function Costam()
  5. {
  6. echo parent::$txt['wlasciciel';
  7. }
  8. }


No i nie da rady, próbowałem używać magicznej metody __get lecz też nic. Mógłby mi ktoś powiedzieć jak przekazać taką tablice lub zmienną?
slash^
  1. class Test1
  2. {
  3. public $txt;
  4.  
  5. public function TestowaMetoda()
  6. {
  7. //łacze sie z bazą i pobieram dane...
  8. $this->txt = mysql_fetch_assoc($wyniki);
  9. }
  10. }


Potem mam drugą klase Test2
  1. class Test2 extends Test1
  2. {
  3. //tutaj jakies deklaracje i metody
  4. function Costam()
  5. {
  6. echo $this->txt;
  7. }
  8. }


[/quote]
Takuro
No właśnie coś mi nie wyświetla w tej drugiej klasie danych z tablicy txt ;/
johny_s
Pokaż wywołania
Takuro
Kod:

  1. <?php
  2.  
  3. class Test2
  4. {
  5. public $tablica;
  6.  
  7. public function metodA()
  8. {
  9. $q = mysql_connect('localhost', 'admin', '123') or die("Padl serwer");
  10. $q = mysql_select_db('magazyny') or die('Padla baza');
  11. $wyniki = mysql_query('SELECT * FROM pracownicy ORDER BY `id` DESC');
  12. $this->tablica = mysql_fetch_assoc($wyniki);
  13. }
  14.  
  15. function __construct()
  16. {
  17. $this->metodA();
  18. }
  19.  
  20. }
  21.  
  22. class Test1 extends Test2
  23. {
  24. private $zmienna;
  25.  
  26. function __construct()
  27. {
  28. $this->zmienna = 5;
  29. }
  30.  
  31. function testowaMetoda()
  32. {
  33. echo $this->zmienna;
  34. }
  35.  
  36. function metodaDruga()
  37. {
  38. echo parent::$this->tablica['imie'];
  39. }
  40. }
  41.  
  42. $t = new Test1();
  43. $t->testowaMetoda();
  44. ?>
Forti
T->zmienna. Na samym końcu da tobie 5. Przy dziedziczeniu nie musisz używać patent:: I chyba nawet nie powinieneś.
slash^
Wywołując parent:: możesz odwołać się do metody nadpisanej w klasie Test1, czyli __construct.

Jezeli w klasie Test1 dasz :
  1. function __construct()
  2. {
  3. parent::_construct();
  4. $this->zmienna = 5;
  5. }
  6.  
  7. function metodaDruga()
  8. {
  9. echo $this->tablica['imie'];
  10. }


powinno zadziałać.
NickOver
Możesz to jeszcze zrobić nie rozszerzając klasy. Mianowicie stworzyć metodę:
  1. public function getTablica($element){
  2. return $this->tablica[$element];
  3. }

Potem tylko musisz się do tego odwołać
  1. $element = $objektTest1->getTablica('imie');
Takuro
Wszystkie tutaj opcje nie działają ;/ Jak już udało się wywołać w konstruktorze klasy Test1 konstruktor z klasy Test2 to daje mi to tylko efekt wypisania zmiennej a dalej nie mogę jej w klasie Test1 użyć do innych celów np sprawdzenie w warunku itp. Ktoś może ma jakiś inny działający sposób? Bo siedze troche na tym sporo i dalej nie wiem jak w klasie Test1 z dziedziczeniem po klasie Test2 użyć danych zapisanych w tablicy "tablica" z metody "metodA"(z klasy Test2) ';/
Forti
Masz błąd w linijce 4 - brakuje średnika...

Pokaż kod.
com
http://ideone.com/0l21QA

Jak was czytam to przeraża mnie, pracujecie z obiektówką i takich podstaw nie znacie wink.gif

Mogłeś również użyć DI smile.gif

http://ideone.com/DiWhQ0

http://ideone.com/G4h8Ad
Takuro
Dzięki com.
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.