Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] Rekurencja
ayeo
post
Post #1





Grupa: Przyjaciele php.pl
Postów: 1 202
Pomógł: 117
Dołączył: 13.04.2007
Skąd: 127.0.0.1

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


Witam!
Mam, powiedzmy, dwie klasy: STUDENT i COURSE. Obiekt STUDENT zawiera w sobie kolekcję obiektów COURSE, natomiast obiekty klasy COURSE zawierają kolekcje obiektów STUDENT. Czy takie coś jest poprawne?

Ten post edytował ayeo 4.04.2008, 11:35:02


--------------------
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
M4chu
post
Post #2





Grupa: Zarejestrowani
Postów: 135
Pomógł: 0
Dołączył: 28.09.2003
Skąd: Rzeszów

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


Oczywiście -- standardowy (akademicki ;-) przykład relacji wiele-do-wielu w relacyjnych bazach danych.
Go to the top of the page
+Quote Post
Ociu
post
Post #3





Grupa: Moderatorzy
Postów: 1 566
Pomógł: 37
Dołączył: 14.05.2003
Skąd: Kraków




Masz ponad 100 postów i dalej nie wiesz, jakie panują zasady na tym subforum? Proszę poprawić nazwę tematu , bo będę zmuszony zamknąć temat.
Go to the top of the page
+Quote Post
ayeo
post
Post #4





Grupa: Przyjaciele php.pl
Postów: 1 202
Pomógł: 117
Dołączył: 13.04.2007
Skąd: 127.0.0.1

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


@M4chu, ja nie mówię o bazach danych tylko o rekurencji!


--------------------
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #5





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


A co w tym nieprawidlowego?
Co najwyzej bedziesz mial problem z odsmiecaniem pamieci, bo PHP nie poradzi sobie z usunieciem tak powiazanych obiektow automatycznie - musialbys np. ze studenta, usunac najpierw kursy, zeby pozbyc sie cyklu referencji (zliczanie referencji itd.)


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
ayeo
post
Post #6





Grupa: Przyjaciele php.pl
Postów: 1 202
Pomógł: 117
Dołączył: 13.04.2007
Skąd: 127.0.0.1

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


Dzięki za odpowiedź, ale mógłbyś troszkę to rozwinąć (jaśniej) ?

edit: czy zastosowanie leniwej konkretyzacji coś tu pomoże? Mam na myśli taką sytuację: Obiekt STUDENT zawiera kolekcję obiektów COURSE, ale żaden z obiektów COURSE nie ładuje kolekcji obiektów STUDENT dopóki nie będzie to konieczne. Dziękuję z góry! winksmiley.jpg





edit2: Może ktoś rozwinąć ten temat... ?


z góry dzięki za wszelkie informacje/wskazówki/sugestie

Ten post edytował ayeo 5.04.2008, 22:19:54


--------------------
Go to the top of the page
+Quote Post
dr_bonzo
post
Post #7





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

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


Cykle + rekurencja: http://en.wikipedia.org/wiki/Garbage_colle...erence_counting
tylko ze to jest problemem gdy podczas 1 uruchoienia skryptu zuzywasz MASE pamieci (dla malego skryptu nie masz oc sie przejmowac; ostatnio przez ten problem przekraczalismy 500MB ramu smile.gif) i chcialbys troche jej przyoszczedzic, np. w petli tworzysz tych studentow + kursy, i na zakonczenie petli, te obiekty ci sa niepotrzebne, i oplaca ci sie dopisac unset() zeby zwolnic pamiec. No i gdy masz takie cykle to PHP ci nie pozbedzie sie tych obiektow, musialbys recznie pozbyc sie tej rekurencji/cyklow.

A co do leniwej konretyzacji - nie rozumiem po co ci ona? bo do garbage collectora nic nie da jesli po pierwszy pobraniu kursow zapiszesz je (optymalizacja) w studencie.


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
ayeo
post
Post #8





Grupa: Przyjaciele php.pl
Postów: 1 202
Pomógł: 117
Dołączył: 13.04.2007
Skąd: 127.0.0.1

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


Proszę o łopatologiczne wytłumaczenie. Załóżmy, że mam obiekt STUDENT zawierający w sobie obiekt COURSE, a ten z kolei zawiera w sobie obiekt STUDENT. Czy, żeby usunąć taki obiekt z pamięci wystarczy w destruktorze (obiektu STUDENT) po prostu usunąć obiekt COURSE?


PS Jak sprawdzić zużycie pamięci pod kątem skryptu? Jak używam memory_get_usage() to mi wychodzi 480MB :/


--------------------
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: 19.08.2025 - 20:18