![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 2 Pomógł: 0 Dołączył: 17.08.2007 Ostrzeżenie: (0%) ![]() ![]() |
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. |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 793 Pomógł: 32 Dołączył: 23.11.2006 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
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ść. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 2 Pomógł: 0 Dołączył: 17.08.2007 Ostrzeżenie: (0%) ![]() ![]() |
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ć (IMG:http://forum.php.pl/style_emoticons/default/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? Ten post edytował kombat 17.08.2007, 19:21:47 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 65 Pomógł: 3 Dołączył: 1.06.2007 Skąd: self::display() Ostrzeżenie: (0%) ![]() ![]() |
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).
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 382 Pomógł: 0 Dołączył: 29.11.2005 Skąd: :jestem(); Ostrzeżenie: (0%) ![]() ![]() |
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 ?
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 26.09.2025 - 15:20 |