Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Forum obiektowo. Leniwa konkretyzacja? Jak to ugryźć?
Forum PHP.pl > Forum > PHP > Object-oriented programming
kombat
Witam wszystkich!

Mam taki oto problem. Chciałbym napisać proste forum internetowe. Pomyślałem sobie, że dobrym pomysłem będzie zastosowanie wzorca ActiveRecord i reprezentowanie w ten sposób wątków i odpowiedzi na forum.

Wszystko ładnie działa, a raczej miałem wrażenie, że działa ładnie, dopóki kolega nie wykazał mi dosyć poważnego błędu w moim dotychczasowym rozumowaniu.

Otóż obiekt klasy reprezentujący wątek na forum w momencie konstruowania ładuje wszystkie swoje właściwości z rekordu bazy danych. (Oczywiście poza leniwie konkretyzującą się kolekcją odpowiedzi). Wygląda jednak dosyć niekorzystnie, gdy np chcę wyświetlić samą tylko listę wątków i nie potrzebuję ładować treści.

Jak sobie z tym najlepiej poradzić? Podejrzewam, że ktoś z Was podpowie mi pewnie, żebym skorzystał z jakiegoś gotowego frameworka typu ORM. Wydaje mi się jednak, że to będzie trochę na wyrost. W końcu logika takiego forum nie jest zbyt złożona.

Zależy mi na tym, żeby w jakiś elegancki sposób sprawić, żeby obiekt reprezentujący wątek ładował z bazy danych tylko te cechy, które faktycznie będą mi potrzebne w danym wywołaniu programu, jednocześnie nie angażując w to bardzo złożonych klas, czy też całych frameworków. Bedę wdzięczny za wszelkie podpowiedzi.

Z góry dziękuję za pomoc i pozdrawiam.
Sedziwoj
Cytat(kombat @ 17.08.2007, 14:35:08 ) *
Zależy mi na tym, żeby w jakiś elegancki sposób sprawić, żeby obiekt reprezentujący wątek ładował z bazy danych tylko te cechy, które faktycznie będą mi potrzebne w danym wywołaniu programu


masz dwie możliwości (no może więcej), albo powiesz obiektowi co ma sobie pobrać, albo przy próbie pobierania tych danych, sprawdzi czy są już pobrane, jeśli nie to je wybierze, jak tak to je zwróci.
To wszystko nie jest wcale tak proste jak się wydaje, jeśli patrzy się na całość.
kombat
Dzięki za odpowiedź.

To rzeczywiście jest trudna sprawa. Chyba zrobię statyczną metodę w duchu wzorca Factory, której będę mówił, z jakim zakresem właściwości ma zainicjować obiekt. Ciekawe jak to jest rozwiązane np. w Cake PHP albo innych frameworkach. W końcu pobieranie całych rekordów przy każdej instantacji obiektu musi powodować straszny narzut na połączeniu z bazą danych. Musieli to jakoś rozwiązać smile.gif

[edit]
Mam jeszcze takie pytanko, czy generalnie programując obiektowo, ludzie bawią się w takie rzeczy, jak ja teraz? Jak duży jest zysk w szybkości programu przy takim podejściu?
grzegorzr
masz to co chcesz. Przy rozwiazaniach zewnetrznych jestes uzalezniony od czyjejs architektury (wersje, patche i latki) i szukanie tego co potrzebujesz moze spedzic ci sen z powiek, z drugiej strony masz gotowe rozwiazania i np. dotakowe mode, skiny itd. (jednym slowem wodotryski).
jastu
Jeśli dobrze cię rozumiem to to powinna być odpowiedź na twoje pytanie - jeśli chcesz wyświetlić listę TEMATÓW nie pobierasz dla każdego tematu oddzielnie rekordu z bazy, tylko jednym zapytaniem pobierz wszystkie.W pętli każdy rekord już jako tablicę przekaż jako paramert do konstruktora obiektu TEMAT . A obiekt który będze pobierał wszystkie rekordy i z każdego rekordu robił obiekt TEMAT nazwijmy kolekcją TEMATÓW z możliwoscią iterowania po obiektach kolekcji. Czy o to chodziło ?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.