Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Leniwa konkretyzacja
athabus
post
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.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
athabus
post
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
Go to the top of the page
+Quote Post
mike
post
Post #3





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Cytat(athabus @ 22.08.2006, 22:42 ) *
Ale się porobiło - człowiek zadaje pytanie, wychodzi, wraca a tu czeka gotowiec od moda - rozpuszczanie userów:D
Raz do roku i moderatorzy mówią ludzkim głosem.

Cytat(athabus @ 22.08.2006, 22:42 ) *
A tak już serio to dokładnie o to mi chodziło. Z tego co widzę, to obiekt Book posiada referencję do BookCollection.
Myślę, że relacja bedzie tu właściwszym słowem. Referencja za bardzo sie kojarzy ... (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)

Cytat(athabus @ 22.08.2006, 22:42 ) *
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ą?
Dokładnie takie cos jest proste do zrealizowania jeśli założy się że nie tylko kolekcja wie wszystko o kolekcjonowanych obiektach, ale też obiekty wiedzą co się z nimi dzieje i maja odwołanie do obiektu kolekcji, która je zawiera.
Wtedy można zrobić takie obserwowanie, a raczej sytuacje kiedy obiekt mówi kolekcji: "Hej, patrz. Coś się stało. Zareaguj."

Cytat(athabus @ 22.08.2006, 22:42 ) *
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)?
Powiem szczerze. Olewam PHP4 i nie interesuje mnie czy to zadziała i jak zadziała (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Już od prawie dwóch lat nie programuję w PHP4.

P.S.
Mój kod ma bug'a.
Praca domowa polega na znalezieniu (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) Nie byłbym soba jesli bym podał rozwiązanie (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)
Podpowiedź: sprawdź co się stanie jeśli będzie tylko jeden obiekt w kolekcji.
Go to the top of the page
+Quote Post
athabus
post
Post #4





Grupa: Zarejestrowani
Postów: 898
Pomógł: 48
Dołączył: 2.11.2005
Skąd: Poznań

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


Cytat(mike_mech @ 22.08.2006, 22:52 ) *
P.S.
Mój kod ma bug'a.
Praca domowa polega na znalezieniu (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) Nie byłbym soba jesli bym podał rozwiązanie (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)
Podpowiedź: sprawdź co się stanie jeśli będzie tylko jeden obiekt w kolekcji.


No chociaż coś - bo jeszcze by sie userzy rozkaprysili (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)

Dzięki za pomoc - zabieram się za kodowanie.
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: 16.10.2025 - 21:38