![]() |
![]() ![]() |
![]() |
![]()
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 ;]
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? |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 2 262 Pomógł: 21 Dołączył: 3.05.2004 Skąd: Sopot, Krakow, W-wa Ostrzeżenie: (0%) ![]() ![]() |
php to nie C++ - konstruktor klasy macierzystej trzeba jawnie wywolac. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 697 Pomógł: 47 Dołączył: 19.12.2003 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
Dzięki ale nadal mam problem... w moim przypadku konstruktor tworzy 2 obiekty(w tym obiekt klasy ext) wiec jego wywołanie spod klasy ext spowoduje zapętlenie programu... Nawet jeśli wyklucze zapętlenie dodając zmienną z nazwą klasy pochodnej to pozostaje problem dostępu do pozostałych klas... w końcu nie moge za każdym razem tworzyć nowych obiektów ;]
Ok posiedziałem troche, przewertowałem przykłady z manuala i wymyśliłem (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Ten post edytował SHiP 11.07.2006, 21:14:04 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 487 Pomógł: 7 Dołączył: 7.01.2004 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Temat jest mylny. Myślę, że lepiej będzie wyglądał "Dziedziczenie, polimorfizm a konstruktory".
Co do zapętlenia całości - myślę, że to już raczej Twój błąd projektowy, który powinieneś naprawić zmieniając zależności. |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 740 Pomógł: 15 Dołączył: 23.08.2004 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
@SHiP - nie wiem dokladnie co Ty chcesz osiągnąc dlatego pozwole sobie zgadywać.
Mysle, ze Twoim rozwiązaniem będzie wzorzec Obserwator. |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 697 Pomógł: 47 Dołączył: 19.12.2003 Skąd: Lublin Ostrzeżenie: (0%) ![]() ![]() |
Obserwator jak najbardziej pasuje... Chodziło mi o wzorzec w którym główna klasa tworzy obiekty i posredniczy w dostepie do nich np.
glowna klasa controller tworzy klasy -> class1, class2 klasy class1 i class2 nie mają bezpośredniego dostępu mogą sie odwołac do kontrolera a on moze odwołać sie do innej klasy. W ten sposob utrzymuje ład i porządek, moduły są wzajemnie chronione a klasa controller moze dodatkowo zarządzać uprawnieniami oraz jak w obserwatorze powiadamiać wszystkie obiekty o jakichs zmianach... Moj wczesniejszykod php(ten z 3 postu) ;] |
|
|
![]()
Post
#7
|
|
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. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.10.2025 - 02:28 |