![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 23 Pomógł: 4 Dołączył: 22.10.2006 Ostrzeżenie: (0%) ![]() ![]() |
problem prawodopodobnie jest prosty ale nigdzie nie moglem znalesc tego - pewnie zle szukam (IMG:http://forum.php.pl/style_emoticons/default/blinksmiley.gif)
dopiero zaczynam z programowaniem obiektowy i dla mnie to troche abstrakcja zalozmy ze mamy wyswietlic liste 10 ostatnich newsow. mam klase 'news' aby pobrac dane trzeba podac w konstruktorze id, ten z koleji ustawia wszystkie dane po koleji. problem jest taki zeby pobrac kazdego newsa a) musimy znac jego id (IMG:http://forum.php.pl/style_emoticons/default/cool.gif) za kazdym razem wykonuje zapytanie mysql, wiec w sumie wykonujemy 11 zapytan wiec rozwiazanie jest do wiadomo czego (IMG:http://forum.php.pl/style_emoticons/default/sciana.gif) pytanie jak to napisac aby to bylo dobrze |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 149 Pomógł: 12 Dołączył: 3.03.2008 Skąd: łódzkie Ostrzeżenie: (0%) ![]() ![]() |
No tylko, że w tym momencie burzy nam to zasady, że obiekt = news, JEDEN news. No i klasa News staje się miejscem skupiającym funkcje newsów. Co jest (jak gdzieś kiedyś czytałem) typowe dla nie pełnego myślenia obiektowego, sam też tak mam (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Ja skłaniał bym się do wykorzystania również Data Access Objects. Mamy automatycznie dwa razy więcej obiektów, bo każdy z obiektów w systemie, który istnieje w bazie powinien mieć swój DAO. Więcej znajdziesz tutaj: http://www.odi.ch/prog/design/php/guide.php Wtedy dajesz:
Co zwróci powyższa metoda wybierz sam: 1) tablica wypełniona już obiektami News, 2) asocjacyjna tablica zbudowana z wyniku zapytania, 3) obiekt $statment na którym było wykonane execute() Za dwoma ostatnimi przemawia względna niezależność od siebie klas News i NewsDAO, chociaż w tym wypadku te klasy są skazane na współpracę ze sobą, więc wygoda pierwszego rozwiązania też jest ok. Ten post edytował jarek_bolo 25.05.2008, 19:44:37 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 9.10.2025 - 16:33 |