Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> czy moj model to MVC?
qbal
post
Post #1





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 24.11.2006

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


witam

Mam pytanie czy taki model aplikacji jak podalem ponizej moge uznac za model MVC?


Kod
       MODEL         |                                kontroler                                        |     widok
---------------------|---------------------------------------------------------------------------------|-------------------            
baza danych <--> DBO |<--> klasy przetwarzajace dane z bazy <-->| pliki poszczegolnych podstron serwisu|<--> szablony Samrty
                     |                                          | obsluguja one zadania GET i POST     |


w typowym MVC powinien byc jeden kontroler. Ja mam osobne dla kazdej strony np. osobne dla index.php, osobne dla przegladania artykulow, osobne dla dodawania artykulow. kazde przetwazaja parametry GET i POST, SESSION tylko w obrebie swojej strony, oraz wywoluja klasy do pobrania i przetworzenia danych z bazy

Ten post edytował qbal 15.03.2007, 14:34:34
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
domis86
post
Post #2





Grupa: Zarejestrowani
Postów: 255
Pomógł: 5
Dołączył: 20.03.2007
Skąd: Kraków

Ostrzeżenie: (30%)
XX---


Ja proponowałbym tak:

mamy:
-jeden FrontController - index.php
-wiele Controller'ów
-wiele Modeli
-wiele View'ów


działanie FrontControllera:
1.wszystkie linki idą na FrontController i on decyduje który Controller i którą funkcje - czyli akcje - w nim odpalić ( i odpala (IMG:http://forum.php.pl/style_emoticons/default/aarambo.gif) )
2.po zakończeniu się akcji zwraca ona jakies dane (powiedzmy obiekt Data), ktore FrontController odbiera
3.w Data->viewName zapisana jest nazwa View'a, który ma być odpalony. FrontController odpala ten View i przekazuje mu wspomniany już obiekt Data.
4.po zakończeniu się View'a jest koniec programu.

działanie Controller'a:
1.zaczyna działac gdy FrontController go stworzy i odpali jakąś jego funkcje
2.cos robi. Moze korzystac z POST i GET i z Modeli
3.Modele musi sobie zaladowac w zaleznosci od swoich potrzeb.
4.nie moze nic wypisywac(zadnych echo, print etc) ani korzystac z bazy danych,plikow i zrodel danych innych niz Modele
5.akcja musi zwrócic obiekt Data zawierający viewName i dane do wyswietlenia.

dzialanie View'a:
1.odpala go FrontController.
2.bierze dane z obiektu Data i wysietla je odpowiednio.
3.moze korzystac TYLKO z obiektu Data - zadnych modeli, controllerow, bazy danych, GET, POST itp

przyklad View'a który wyswietla strone HTML za pomocą Smarty:

  1. <?php
  2. class SmartyView
  3. {
  4. public function render($Data)
  5. {
  6. ...
  7. tworzy nowy obiekt Smarty na layoucie o nazwie powiedzmy $Data->params['layoutName']
  8. ...
  9.  daje Smartiemu zmienne z tablicy $Data->variables
  10.  ...
  11.  odpala Smartiego
  12. }
  13.  
  14. }
  15. ?>



przyklad View'a który wyswietla dane w postaci XML:

  1. <?php
  2. class XMLView
  3. {
  4. public function render($Data)
  5. {
  6. ...
  7.  uruchamia PEAR'owski XMLSerializer->serialize( $Data->variables )
  8.  ...
  9.  echuje wynik z odpowienim headerem XML
  10. }
  11.  
  12. }
  13. ?>



działanie Modelu:
1.uzywany przez Controllery.
2.Jest posrednikiem miedzy zrodlem danych a Controllerem.
3.pobiera dane z np bazydanych i daje je w odpowiedniej formie Controllerowi
4.zmienia dane w bazie za poleceniem Controllera - moze je tez walidować.

przyklad Modelu :

  1. <?php
  2. class ArticleModel
  3. {
  4. public function getNewestArticle()
  5. {
  6. ...
  7. pobiera najnowszy artykuł z bazy z tablicy Articles (id, author_id, title, body)
  8. ...
  9.  pobiera nazwe autora z bazy z tablicy Users za pomocą author_id z artykułu
  10.  ...
  11. zwaca array(id,author_id,author_name,title,body)
  12. }
  13.  
  14. public function addArticle($author_id, $title, $body)
  15. {
  16. ...
  17.  dodaje nowy artykuł do bazy do tablicy Articles (author_id, title, body)
  18. }
  19. }
  20. ?>
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 13.03.2026 - 09:06