Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Dziedziczenie obiektów, a raczej tablicy z obiektami
SHiP
post
Post #1





Grupa: Zarejestrowani
Postów: 697
Pomógł: 47
Dołączył: 19.12.2003
Skąd: Lublin

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


Mam mały problem z dziedziczeniem wartosci ;]

  1. <?php
  2. class other
  3. {
  4. function check()
  5. {
  6. echo 'ok<br/> ';
  7. }
  8. }
  9.  
  10. class ext extends main
  11. {
  12. public function __construct()
  13. {
  14. echo $this -> example.'<br/>'; //ok
  15. print_r($this -> myObjects); // puste?
  16. $this -> myObjects['other'] -> check(); // nie dziala :/
  17. }
  18.  
  19. public function ble()
  20. {
  21. }
  22. }
  23.  
  24. class main
  25. {
  26. public $myObjects=Array();
  27. public $example='Example text';
  28.  
  29. public function __construct()
  30. {
  31. $this -> myObjects['other'] = new other();
  32. $this -> myObjects['other'] -> check(); // ok
  33. $this -> myObjects['ext'] = new ext();
  34. }
  35. }
  36.  
  37. $mainObj = new main();
  38. ?>


Jeżeli stworzony przez obiekt klasy main obiekt klasy other zapisze w tablicy publicznej to obiekt klasy dziedziczącej tą tablice nie widzi jej elementow ;] Dlaczego?

Szukam powiązania tak aby po stworzeniu obiektów 2 klas jeden uzyskał dostęp do drugiego po przez pośrednika - klase main ;]. Próbowałem stworzyć funkcję getIterate w klasie main ;] ale chyba coś pomieszałem bo nie działało... jakieś pomysły?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
bigZbig
post
Post #2





Grupa: Zarejestrowani
Postów: 740
Pomógł: 15
Dołączył: 23.08.2004
Skąd: Poznań

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


Musisz zmiksowac pewne rozwiazania. Jesli Twoj kontroler ma towrzyc obiekty innych klas to na mysl przychodzi wzorzec budowniczego. Wzorca obserwatora nie da sie u Ciebie zastosowac w klasyczny sposob poniewac jak rozumiem obiekty bedą oddzialywac na siebie na wzajem.

Pisalem kiedys cos takiego. Moj kontroler (menadzer) mial wlasciwosc statyczna, ktora byl obiekt implementujacy interfejs SplSubject (zobacz rozszerzenie SPL dla php) i sluzyl on przede wszystkim jako rejestr obiektow, ktore sie na wzajem obserwowaly - (implementowaly interfejs SplObserver).

Jesli w jednym obiekcie zaszla zmiana wywolywana byla wybrana metoda statyczna kontrolera ktory wykonywal metode notify Subjecta informujac w ten sposob pozostale zarejestrowane obiekty o tym, ze w jednym z nich zaszla zamiana. Oczywiscie wywolanie metody notify u Subiecta jest rownoznaczne z wywolaniem metody update u Obserwatora. U mnie metoda update pobierala potrzebne informacje nie z obiektu subiekta przekazanego jako parametr metody update, ale z kontrolera poprzez wywolanie stosownej statycznej metody. Kontroler mial tylko statyczne wlasciwosci i metody.

Tak to w wielkim skrocie dzialalo dla uproszczenia.
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 15.09.2025 - 21:13