Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Dziedziczenie zmiennej
tomaszek_j
post
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 8.08.2013

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


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





Grupa: Zarejestrowani
Postów: 82
Pomógł: 6
Dołączył: 23.03.2008
Skąd: Szczecin

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


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


--------------------
Pracuję na: Apache 2.2.4, MySQL 5.0.20a, PHP 5.3.0
Go to the top of the page
+Quote Post
b4rt3kk
post
Post #3





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

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


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

Ten post edytował b4rt3kk 8.08.2013, 23:40:06


--------------------
Jeśli pomogłem, kliknij proszę 'pomógł'. Dzięki.
Go to the top of the page
+Quote Post
tomaszek_j
post
Post #4





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 8.08.2013

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


dzięki wielkie smile.gif całkowicie zapomniałem o metodzie static ;/ czasami najprostsze rzeczy są najtrudniejsze :|
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: 20.08.2025 - 12:07