Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]klasa pochodna i dostęp do zmiennych
Forum PHP.pl > Forum > Przedszkole
xsalok
Mam problem z dostępem do zmiennej klasy bazowej z klasy pochodnej:

Przykładowo są 2 pliki:

klasa_rodzic.php
  1. class Rodzic{
  2.  
  3. protected zmienna1=NULL;
  4.  
  5. public function setZmienna1($zmienna){
  6.  
  7. $this->zmienna1 = $zmienna1;
  8. }
  9.  
  10. public function getZmienn1(){
  11. return $this->zmienna1;
  12. }
  13.  
  14. }


oraz:

klasa_potomek.php

  1. use Rodzic;
  2.  
  3. class Potomek extends Rodzic{
  4.  
  5. protected $dane = array("zmienna2" => NULL);
  6.  
  7. public function setZmienna2(){
  8. $this->$this->dane["zmienna2"] = $this->zmienna1;
  9. }
  10.  
  11. public function getZmienna2(){
  12. return $this->zmienna2;
  13. }
  14.  
  15. }


w pliku głównym, powiedzmy index.php część odpowiadająca za wywołanie wygląda tak:

  1. $rodzic = new Rodzic();
  2. $rodzic->setZmienna1($value);
  3.  
  4. $potomek = new Potomek();
  5. $potomek->setZmienna2();
  6. $wartosc = $potomek->getZmienna2();


poniższa zmienna $wartosc jest niestety pusta

Może ma ktoś ochotę wytłumaczyć mi dlaczego tak się dzieje?
Rysh
Bo to dwa różne obiekty. Ustawiasz w pierwszym zmienną, ale jej nie dziedziczysz przecież.
Pyton_000
Co to za potworek:

$this->$this->

Popraw literówki.

Poza tym jak kolega wyżej wspomniał. Jedno do drugiego nic nie ma.
xsalok
próbowałem też robić to w ten sposób

  1. $this->zmienna2 = parent::getZmienna1();


Literówki mogą się zdarzyć, bo napisałem przykład. W głównym projekcie ich nie ma. Zastanawiałem się tylko dlaczego przekazuje mi pustą zmienną...
Pyton_000
Dostałeś już odpowiedź.

Tworzysz 2 obiekty i na obu działasz oddzielnie. Żadnym magicznym sposobem zmienne z Obj` nie znajdą się dostępne w Obj2
xsalok
Liczyłem na to, że istnieje jakiś sposób przekazania zmiennych z klasy rodzica do klasy pochodnej. Szkoda , dzięki za pomoc.
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.