![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 898 Pomógł: 48 Dołączył: 2.11.2005 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Witam, mam problem z leniwą konkretyzacją (czyli opóźnioną inicjacją niektórych cech obiektów).
Sprawa wygląda tak, że mam kolekcję obiektów -> dajmy na to książek. Kolekcja na początku inicjuje książki -> ale tylko autorów i tytuł ->spis rozdziałów chciałbym aby był inicjowany z "opóźnieniem" - tylko wtedy, kiedy będzie potrzebny. Generalnie wszystko jest proste jeśli rozważamy to z perspektywy jednej książki -> wystarczy stworzyć obiekt, i przy próbie wywołania metody ksiazka->podajRozdzialy - odczytujemy je z bazy i inicjujemy liste rozdzialow. Ja natomiast potrzebuję sposobu, aby w razie próby odczytania spisu treści jednej książki, automatycznie odczytać spisy treści pozostałych książek znajdujących się w kolekcji. Na początku myślałem, że będzi to proste, ale okazuje się, że utknąłem w tym punkcie. Myślałem o wykorzystaniu wzorca obserwatora -> ale tu pojawia się problem, bo każda ksiażka musiałaby mieć referencję do kolekcji książek - co spowoduje zapętlenie -> książka jest elementem kolekcji i jednocześnie kolekcja jest elementem książki... Przyznam się szczerze, że nie próbowałem zapisać kodu tego rozwiązania, więc nie mam 100% pewności, że to by nie działało, ale chyb nie będzie działac... Czy jest jakiś wzorzecz/ metoda, którą mógłbym wykorzystać do obejścia tego problemu. Dodam, że jest to dla mnie bardzo ważne, gdyż przykiład jest uproszczeniem, w moim przypadku, gdyby udało mi się rozwiazać ten problem zaoszczędzę dużo pracy bazie danych. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 898 Pomógł: 48 Dołączył: 2.11.2005 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Ale się porobiło - człowiek zadaje pytanie, wychodzi, wraca a tu czeka gotowiec od moda - rozpuszczanie userów:D
A tak już serio to dokładnie o to mi chodziło. Z tego co widzę, to obiekt Book posiada referencję do BookCollection. Myślałem nawet nad takim rozwiązaniem - ale stwierdziłem, że to się nie może udać... a tu niespodzianka - php nie wpadło w rekurencję. Mike_mech - powiedz mi tylko jeszcze, czy dobrze wnioskuję, ale to jest możliwe dzięki temu, że obiekty book nie zawierają kolekcji tylko wskaźnik na nią? W takim układzie ten przykład działa tylko na php5 bo php4 chyba przekazuej obiekty przez wartość domyślnie(chociaż nie jestem pewien bo nie pisałem w php4)? Piszę na php5 ale tak pytam, żeby się czegoś dowiedzieć. Jeszcze raz dzięki za pomoc - moja baza będzie ci wdzięczna :-) edit Cytat private $arrExampleTitles = array( 'Przygody Nospora Puchatka', 'Dzieci z Bulerbyn', 'Przygody Tolka Banana', 'W Pustyni i w Puszczy' ); (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) Ten post edytował athabus 22.08.2006, 21:46:32 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 16.10.2025 - 00:39 |