Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [mvc]poraz kolejny..., Pytanie o teorie
MadHatter
post
Post #1





Grupa: Zarejestrowani
Postów: 20
Pomógł: 1
Dołączył: 15.02.2007

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


Witam,

Mam pytanie czysto teoretyczne. Buduje strone i chce ja oprzec na wzorcu MVC. Wspieram sie Smarty i Pear przy tym. I teraz moje pytania.
1. Czy za widok maja byc odpowiedzialne tylko szblony smarty czy tworzyc do niego osobna klase?
2. Poza przypisaniem danych ktore uzyskuje z modelu, podstrony roznia sie tez wygladem(dokladnie tlami glownej tresci), jaka czesc MVC powinna byc odpowiedzialna za ustwienie przykladowego tla? Rozwazam dwa przypadki, nie wiem jednak ktory bylby "najczystrzy" jesli chodzi o zalozenia ww wzorca. Pierwszy to to ze poszczegolne metody kontrolera przypisauja do szablonu smarty, dane z modelu oraz w kazdje metodzie jest deklarowana zmienna odpowiadajaca za tlo strony i tak tez przypisywana do szablonow. Drugie rozwiazanie to takie, ze w akcjach kontrolera wogole nie zajmu je sie ustawianiem tla a tylko wyborem widokow. W takim przypadku jednak ilosc szablonow musialbym odpowiednio rozmnozyc.

Czytam dosc spro na temat mvc, moje doswiadczenie z frameworkiem cakePHP wcale nie rozwialo wszelkich watpliwosci jednak, przynajmniej tych teoretycznych. Rozumiem ze wzorzec jest raczej czyms abstrakcyjnym i elastycznym niemniej na forum znalazlem taka definicje widoku:

Cytat
Główna zasasda MVC jest to aby w modelu byl tylko kod php a w VIEW tylko html


Natomiast w jednym z rtykulow na wortalu opis brzmi juz tak:

Cytat
Widok powinien wykorzystywać model do pobrania danych, które będą wyświetlone. Typowo, widok powinien utworzyć instancje klas modelu i wywołać metody odpowiedzialne za pobranie odpowiednich danych. Tym, czego należy się wystrzegać w widoku, jest modyfikacja danych. Widok nie powinien zmieniać w żaden sposób stanu aplikacji. Powinien np. wyświetlać listę użytkowników, ale nie powinien ich dodawać ani usuwać.


Rozbieznosc jest wiec dosc spora...

Jak najlepiej wedug Was zarac sie za to, w przypadku niewielkiej aplikacji?

Z gory dzieki i pozdrawiam!
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
menic
post
Post #2





Grupa: Zarejestrowani
Postów: 493
Pomógł: 0
Dołączył: 14.06.2003
Skąd: Tomaszów Lubelski/Rzeszów

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


@Sedziwoj: do czynienia z propelem 1.3 nie miałem, wiec nie dokladnie o co chodzi... Ale Co do phpName itp... Owszem masz takie cos, ale No to jest tak jak by nakładka na tą sytuacje co opisałem w poscie wyzej. Wygenerujesz metode getTitle() ktora bedzie wskazywała na kolumne "nazwa". Tylko że takie działanie IMO wprowadza zamęt, szczególnie jak jest duża baza danych. Zazwyczaj nazwa metody jest identyczna z nazwą kolumny. W przypadku zmiany moze zapoanować małe zamieszanie, szczególnie dla osób które dopiero sie wdrażają do projektu.
@sanchoo: U mnie było odwrotnie... Im wiecej czytałem tym mniej wiedziałem (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
@bim2: im wiecej dyskusji tym lepiej. Zawsze mozna trafić na coś ciekawego (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
Sedziwoj
post
Post #3





Grupa: Zarejestrowani
Postów: 793
Pomógł: 32
Dołączył: 23.11.2006
Skąd: Warszawa

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


Cytat(menic @ 28.08.2007, 16:10:51 ) *
@Sedziwoj: do czynienia z propelem 1.3 nie miałem, wiec nie dokladnie o co chodzi... Ale Co do phpName itp... Owszem masz takie cos, ale No to jest tak jak by nakładka na tą sytuacje co opisałem w poscie wyzej. Wygenerujesz metode getTitle() ktora bedzie wskazywała na kolumne "nazwa". Tylko że takie działanie IMO wprowadza zamęt, szczególnie jak jest duża baza danych. Zazwyczaj nazwa metody jest identyczna z nazwą kolumny. W przypadku zmiany moze zapoanować małe zamieszanie, szczególnie dla osób które dopiero sie wdrażają do projektu.


Tylko że Ty zmieniasz nazwę kolumny w bazie, ten przykład co podałeś, więc robisz większy zamęt, Do tego pisałem o dynamicznym mapowaniu (klas dopiero w 1.3) ale metod dla pola da się wyciągać bo robię to, co prawda kod jest cięższy, ale odporny na zmiany. (a w elementach dynamicznie generujących tylko tak się da)
  1. <?php
  2. /**
  3.  * Pobiera z Peer nazwe metody do obsługi danej kolumny.
  4.  *
  5.  * <code>
  6.  * $strPeerName = 'peer_name';
  7.  * $obj = call_user_func( array( $strClassPeer, 'retrieveByPK' ), 1 );
  8.  * $strValue = call_user_func( array($obj,'get'.self::getMethodFromPeer($strClassPeer,'column_name')));
  9.  * echo $strValue;
  10.  * call_user_func( array($obj,'set'.self::getMethodFromPeer($strClassPeer,'column_name')), 'new_value' );
  11.  * $obj->save();
  12.  * </code>
  13.  * 
  14.  * @param string $strPeerName Nazwa klasy Peer
  15.  * @param string $strColumnName Nazwa kolumny dla której szukamy metody
  16.  * @return string Nazwa metody do obsługi kolumny
  17.  */
  18. static public function getMethodFromPeer( $strPeerName, $strColumnName ){
  19. $objTableMap = call_user_func( array( $strPeerName, 'getTableMap' ) );
  20. $strFunct = $objTableMap->getColumn( $strColumnName )->getPhpName();
  21. return $strFunct;
  22. }
  23. ?>

Podajesz peer i nazwę kolumny dostajesz nazwę metody (bez get/set to sam wybierasz)
Go to the top of the page
+Quote Post

Posty w temacie
- MadHatter   [mvc]poraz kolejny...   21.07.2007, 18:54:09
- - menic   ech.... Ile razy to jeszcze będzie wałkowane? Jes...   21.07.2007, 20:56:12
- - Cysiaczek   http://forum.php.pl/index.php?showtopic=69281...   21.07.2007, 21:13:17
- - MadHatter   Bardzo dziekuje, tego watku nie wygrzebalem, coz w...   21.07.2007, 23:37:39
- - sanchoo   no to ja ma pytanie ... z klasy [PHP] pobierz, pla...   13.08.2007, 12:12:12
- - Cysiaczek   Przyjrzyj się definicji swojej klasy C, wogóle nap...   13.08.2007, 12:19:38
- - sanchoo   faktycznie zle napsialem.. napsialem to z palca z...   13.08.2007, 13:04:01
- - Sedziwoj   @sanchoo Ty może już nie pisz, albo najpierw spraw...   13.08.2007, 17:25:08
- - sanchoo   hehe tak jak mowilem chodzilo o kokreny przyklad ...   13.08.2007, 20:35:48
- - Sedziwoj   @sanchoo Co ma działać, to że to co piszesz jest n...   13.08.2007, 22:19:17
- - sanchoo   Cytatto ciezko zczaic o co komus chodzi... moze to...   14.08.2007, 07:21:24
- - sanchoo   MVC a walidajca formularzy Chce zamknac walidacje...   24.08.2007, 11:48:35
- - menic   Może TO ci pomoze. Na koncu jest przykład jak u si...   24.08.2007, 11:57:43
- - Speedy   CytatGłówna zasasda MVC jest to aby w modelu byl t...   26.08.2007, 23:43:20
|- - sanchoo   Cytat(Speedy @ 27.08.2007, 00:43:20 )...   27.08.2007, 13:38:18
- - menic   @up: no czekam jaki to to jest wzorzec Bo banialu...   27.08.2007, 14:13:53
- - sanchoo   menic dzieki za info. Zrobilem to mniej weicej tak...   27.08.2007, 14:16:39
- - Cysiaczek   Chcesz powiedzieć, że zrobiłeś Model extends Valid...   27.08.2007, 14:32:17
- - sanchoo   chcialem waldiacje zamnac w jedenj klasie ... tak ...   27.08.2007, 14:42:26
- - Cysiaczek   Nie chodzi mi o to, że umieszczenie walidacji w mo...   27.08.2007, 14:47:03
- - menic   Pomijając kwestie nazewnictwa wzorców... U mnie va...   27.08.2007, 14:50:02
- - sanchoo   .. w tej chwili wydaje mi sie to... na jedno wyjdz...   27.08.2007, 14:51:14
- - menic   Z tego co zauwazyłem to validacja, validacji nie r...   27.08.2007, 14:57:33
- - bim2   CytatOpisów i implementacji MVC jest tyle ilu prog...   27.08.2007, 17:33:21
|- - Sedziwoj   @bim2 Coś chyba masz pokopane... albo źle rozumiem...   27.08.2007, 20:49:01
- - sanchoo   "Kontroler moze pobierac z modelu i przekazyw...   28.08.2007, 07:45:45
- - Sedziwoj   @sanchooPamiętaj, że widokiem może ...   28.08.2007, 08:29:14
- - sanchoo   Wiem ze baza posortuje szybciej... tylko tu jest i...   28.08.2007, 08:49:00
- - bim2   @Sedziwoj Akcja u mnie to nie kontroller... rozdzi...   28.08.2007, 10:20:38
- - Ludvik   CytatTu pojawil mi sie kolejny problem: gosc zarzy...   28.08.2007, 11:33:35
- - sanchoo   No dokładnie tam zrobilem ... Dzieki za artykul pr...   28.08.2007, 13:21:50
- - Sedziwoj   @sanchoo No i co za różnica że model nie pobiera d...   28.08.2007, 13:43:33
|- - sanchoo   Cytat(Sedziwoj @ 28.08.2007, 14:43:33...   28.08.2007, 14:20:19
- - menic   Przy tej dyskusji należy podkreśli...   28.08.2007, 14:36:04
|- - Sedziwoj   @menic Mylisz się da sie to zrobić, bo masz takie ...   28.08.2007, 14:43:44
- - bim2   Mogę korzystać z ilu modeli/widoków chce. I jak zm...   28.08.2007, 14:43:48
- - sanchoo   ... a ja mysle ze warto uslyszec inne opinie Przy...   28.08.2007, 14:50:16
- - menic   @Sedziwoj: do czynienia z propelem 1.3 nie miałem,...   28.08.2007, 15:10:51
|- - Sedziwoj   Cytat(menic @ 28.08.2007, 16:10:51 ) ...   28.08.2007, 15:56:54
- - sanchoo   Mam 2 kolejne problemy ... sa zamienne rozwiazani...   30.08.2007, 07:29:03


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: 8.10.2025 - 05:12