Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Własny framework MVC, problem z DAO oraz niezmieniajacą się treścią strony
strefa
post
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?
Go to the top of the page
+Quote Post
erix
post
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. 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 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.


--------------------

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!
Go to the top of the page
+Quote Post
strefa
post
Post #3





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 15.10.2007

Ostrzeżenie: (0%)
-----


Cytat(erix @ 16.04.2010, 19:49:21 ) *
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 tongue.gif Zaraz się zabiorę do analizowania CakePHP.

Cytat(erix @ 16.04.2010, 19:49:21 ) *
No nawet w samej konstrukcji zapytania nie da się uniknąć korzystania ze wszystkich powiązanych tabel. 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 sciana.gif

Cytat(erix @ 16.04.2010, 19:49:21 ) *
Hmm, przecież takie rzeczy trzyma się zwykle w szkielecie, a dane pobiera do niego we front controllerze (chyba dobrze pamiętam winksmiley.jpg)
(...)
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.
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 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.
Go to the top of the page
+Quote Post
erix
post
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. winksmiley.jpg

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!
Go to the top of the page
+Quote Post
marcio
post
Post #5





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


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 haha.gif jednak wedlug mnie takie rzeczy powinienes miec w glownym szablonie/widoku aplikacji gdzie wymiana stopki,header ograniczy cie tylko do modyfikacji tego szablonu/widoku.
Do tego radze zainteresowac sie modularnoscia.


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 18:46