![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 15.10.2007 Ostrzeżenie: (0%) ![]() ![]() |
Witam.
Przez ostatnie kilka dni dość mocno przeglądałem forum 'Pro' pod kątem wszelkich informacji o implementacji MVC, wchodzi na to że podstawową zasadą jeżeli chodzi ogólnie o OOP w PHP jest żeby robić jak komu wygodnie a nie stricte trzymać się wzorców. Dodatkowo przestudiowałem TinyMVC, SimpleMVC i EuropaPHP ( szczątkowo ). Chwilowo mój framework luźno bazuje na MVC, przy czym Moduł rozbity jest na DAO( Data Access Object ) oraz głupiutkie klasy-kontenery. Mam kilka problemów: 1. Chcąc pobrać newsy z bazy, łącznie z loginem twórcy newsa potrzebowałem jednego zapytania z INNER JOINi otrzymywałem co chciałem. Jednak przy DAO jakoś tego nie widze, zdaj mi się że NewsModel powinien przechowywać instancję UserModel. Widzę dwa wyjścia: pozwolić NewsDao na korzystanie z tabeli 'users' ( złamanie zasad Dao ) lub wykonać zapytanie o newsy a później do każdego newsa dociągnąć userów, co generuje 101 zapytań dla 100 newsów!! 2. Czy ten framework jest jeszcze gdzieś dostępny? ( poszukuję w celu analizy kodu ) 3. Mam nieco problemu ze stworzeniem statycznej treści na stronie, mam tu na myśli to co się zawsze wyswietla, tj. nagłówek, menu, stopka, w tej chwili tego nie potrzebuję, jednak jest to funkcjonalność jaką docelowo muszę osiągnąć. Znalazłem coś o aplecie czyli krótkim kodzie, który ma za zadanie tylko i wyłącznie wyświetlić jakiś fragment strony, np. menu. Są one kolejkowane w łańcuchu akcji i w ten sposób każdy z nich niejako 'dopisuje' swoją część do tego co jest na końcu wyświetlane. Wydaje mi się to dobrym rozwiązaniem, jednak może widzicie wady tego systemu? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Cytat Jednak przy DAO jakoś tego nie widze, zdaj mi się że NewsModel powinien przechowywać instancję UserModel. W swoim nie korzystam z jakichś sztywnych połączeń - jeśli potrzebuję relacji, korzystam z metody connect i paroma parametrami. Jak już chcesz na upartego, na sztywno, to nie wciskaj instancji klasy, tylko rób tak, jak jest w większości FW robione: zmienne hasOne, hasMany i hasAndBelongsToMany. Zerknij sobie np. do CakePHP, to zobaczysz jak to jest tam zrealizowane. Cytat na korzystanie z tabeli 'users' ( złamanie zasad Dao ) lub wykonać zapytanie o newsy a później do każdego newsa dociągnąć userów, co generuje 101 zapytań dla 100 newsów!! No nawet w samej konstrukcji zapytania nie da się uniknąć korzystania ze wszystkich powiązanych tabel. (IMG:style_emoticons/default/winksmiley.jpg) Ale jedno zapytanie dla każdego newsa z osobna, to już masakra. Cytat Mam nieco problemu ze stworzeniem statycznej treści na stronie, mam tu na myśli to co się zawsze wyswietla, tj. nagłówek, menu, stopka Hmm, przecież takie rzeczy trzyma się zwykle w szkielecie, a dane pobiera do niego we front controllerze (chyba dobrze pamiętam (IMG:style_emoticons/default/winksmiley.jpg) ) Cytat Znalazłem coś o aplecie czyli krótkim kodzie, który ma za zadanie tylko i wyłącznie wyświetlić jakiś fragment strony, np. menu. No tak, ale po co, skoro jest ten element zawsze wyświetlany? Jak chcesz, to możesz sobie podzielić w jakimś szablonie, ale ładowanie do tego apletu/helpera jest raczej bez sensu. Ale w np. paginatorze już jak najbardziej ma sens. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 3 Pomógł: 0 Dołączył: 15.10.2007 Ostrzeżenie: (0%) ![]() ![]() |
W swoim nie korzystam z jakichś sztywnych połączeń - jeśli potrzebuję relacji, korzystam z metody connect i paroma parametrami. Jak już chcesz na upartego, na sztywno, to nie wciskaj instancji klasy, tylko rób tak, jak jest w większości FW robione: zmienne hasOne, hasMany i hasAndBelongsToMany. Zerknij sobie np. do CakePHP, to zobaczysz jak to jest tam zrealizowane. Coś za CakePHP się zabrać nie mogłem, wolałem coś jak TinyMVC, simpleMVC, gdzie już nazwa sugeruje że jest proste (IMG:style_emoticons/default/tongue.gif) Zaraz się zabiorę do analizowania CakePHP.No nawet w samej konstrukcji zapytania nie da się uniknąć korzystania ze wszystkich powiązanych tabel. (IMG:style_emoticons/default/winksmiley.jpg) Ale jedno zapytanie dla każdego newsa z osobna, to już masakra. Mówiąc "wykonać zapytanie o newsy a później do każdego newsa dociągnąć userów" miałem na myśli że każdy NewsModel uruchomi UserDao i pobierze sobie w ten sposób dane o użytkownikach, dlatego wyszło mi te 101 zapytań, co jest dla mnie ilością nie do przyjęcia (IMG:style_emoticons/default/sciana.gif) Hmm, przecież takie rzeczy trzyma się zwykle w szkielecie, a dane pobiera do niego we front controllerze (chyba dobrze pamiętam (IMG:style_emoticons/default/winksmiley.jpg) ) Gdyby to było zaszyte tak całkiem na stałe to najprawdopodobniej umieściłbym to w samym pliku szablonu, ale chciałem zapewnić możliwość dodawania usuwania bloków z tego widoku, tak by admin( de facto ja (IMG:style_emoticons/default/biggrin.gif) ) mógł sobie dodać np. panel z reklamami czy z losowymi obrazkami ze strony lub też zmienić kolejność wyświetlania na stronie, bez konieczności żmudnego przerabiania szablonów.(...) No tak, ale po co, skoro jest ten element zawsze wyświetlany? Jak chcesz, to możesz sobie podzielić w jakimś szablonie, ale ładowanie do tego apletu/helpera jest raczej bez sensu. Ale w np. paginatorze już jak najbardziej ma sens. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 7.10.2025 - 08:25 |