![]() |
![]() ![]() |
![]() |
![]()
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. ![]() 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 ![]() 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. -------------------- ![]() ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW! |
|
|
![]()
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 ![]() No nawet w samej konstrukcji zapytania nie da się uniknąć korzystania ze wszystkich powiązanych tabel. 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 ![]() ![]() Hmm, przecież takie rzeczy trzyma się zwykle w szkielecie, a dane pobiera do niego we front controllerze (chyba dobrze pamiętam 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 ![]() (...) 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
#4
|
|
![]() Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Cytat 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 Dla każdego jest nie do przyjęcia. Generalnie wszystko sprowadza się do zbudowania odpowiedniego zapytania, wykonania go i odpowiedniego "pompowania" otrzymanych danych do połączonych modeli. Cytat 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 to wypadałoby precyzować zawczasu. ![]() A widgety (raczej tak się przyjęło nazywać to, o czym mówisz), to racja - w osobnych "modułach". -------------------- ![]() ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW! |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 2 291 Pomógł: 156 Dołączył: 23.09.2007 Skąd: ITALY-MILAN Ostrzeżenie: (10%) ![]() ![]() |
Ad 2.Kiedys sam szukalem i niestety nie udalo mi sie nigdzie znalesc zadnej paczki z tym fw a szkoda ;/
Ad 3. Tak jak pisal @Erix mozesz zaimplementowac widget'y/aplety lub jak kto woli to nazywac wazne ze o to samo chodzi ![]() Do tego radze zainteresowac sie modularnoscia. -------------------- Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/ Moj blog |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 18:46 |