Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Dziedziczenie zmiennej
Forum PHP.pl > Forum > Przedszkole
tomaszek_j
Witajcie, zakręciłem się chyba już sam jak mam to zrobić.

Mam sobie dwie klasy

  1. <?php
  2.  
  3. class AA {
  4.  
  5. var $text = null;
  6.  
  7. function w($text) {
  8.  
  9. $this->text .= $text;
  10. }
  11.  
  12. function display($name = "") {
  13.  
  14. echo $this->text;
  15.  
  16. }
  17.  
  18. }
  19.  
  20. class BB extends AA {
  21.  
  22.  
  23. function w2($text = "") {
  24.  
  25. $this->w($text);
  26.  
  27. }
  28.  
  29. }
  30.  
  31. $a = new AA();
  32. $a->w("JEDEN");
  33.  
  34. $b = new BB();
  35. $b->w("DWA");
  36.  
  37.  
  38. $a->display();
  39.  
  40. ?>


chciałbym aby powyższy skrypt zwrócił mi coś takiego:

JEDEN
DWA

czyli tworzymy sobie jeden obiekt, później drugi. W tej chwili to działa tak, dziedziczenie "zeruje" mi zmienną $text przez co zamiast powyższego wyniku zwracany jest tylko jednostkowy tekst.

Co bym musiał poprawić? Z góry dzięki za pomoc smile.gif
Trobin
Tworzysz dwa obiekty - każdy z nich jest odrębnym "bytem", więc de facto nic Ci się nie zeruje. Myślę, że dla Ciebie rozwiązaniem byłoby poczytanie o metodach i właściwościach statycznych
b4rt3kk
Prześledź sobie chronologię zdarzeń w Twojej klasie. Po pierwsze istnieje tylko jeden obiekt text, który jest nadpisywany przez kolejne działania (przyjmuje wartość dla ostatniego wywołania). Metoda w2 w ogóle nie jest wywoływana. Musiałoby wyglądać mniej więcej tak:

  1. function w2($text) {
  2. $this -> text .= $text;
  3. }


Wywołanie:

  1. $a = new AA();
  2. $a->w("JEDEN");
  3.  
  4. $b = new BB();
  5. $b->w2("DWA");
  6.  
  7.  
  8. $b->display();


* ze względu na liczbę promili krwi w alkoholu mogę się mylić.
tomaszek_j
dzięki wielkie smile.gif całkowicie zapomniałem o metodzie static ;/ czasami najprostsze rzeczy są najtrudniejsze :|
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.