Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> MVC - widok
Apo
post
Post #1





Grupa: Zarejestrowani
Postów: 426
Pomógł: 1
Dołączył: 2.10.2005

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


Witam

Zastanawiałem się ostatnio nad implemenacją widoku w moim frameworku. Dotychczas nie tworzyłem osobnych klas dla widoku tylko robiłem tak jak jest w ZF:

  1. <?php
  2.  
  3. class Controller_View extends Controller {
  4.  
  5. public function showComentsAction()
  6. {
  7. $view = new View(); // poprostu prosty parser szablonów
  8. $view->imie = "Marek"; // assign
  9. $view->render('szablon'); // wygenerowanie widoku i przekazanie do zmiennej w HttpResponse
  10. }
  11.  
  12. }
  13. ?>


Ale zauważyłem że dużo osób tworzy osobne klasy dla widoku np:

  1. <?php
  2.  
  3. class News_View extends View {}
  4.  
  5. ?>


Czy moglibyście wyjaśnić jakieś plusy trzymania widoków w osobnych klasach :?: (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
eai
post
Post #2





Grupa: Zarejestrowani
Postów: 367
Pomógł: 10
Dołączył: 20.05.2005

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


U mnie wyglada to tak:

Ze mam tablice z zaglebieniami:

Kod
[0] =>
         [file] = plik.tpl
         [setvar] = string;
         [setvar] = string2;
         [setvar] = string3;
         [setvar][] =>
                           [file] = plik2.tpl
                           [setvar] = string4;
                           [setvar] = string5;
                           [setvar] = string6;
itd..


Potem robie funkcje Generate_VIEW_HTML polega ona na tym ze foreach dostaje te tablice i leci po elementach jesli w setvar napotka tablice (ktora jest kolejnym szablonem nie tablica ze zwyklymi stringami) zwraca widok tej samej funkcji:

  1. <?php
  2. function Generate_VIEW_HTML ($tablica)
  3. {
  4. foreach ($tablica as $key => $value)
  5. {
  6.  switch ($key)
  7.  {
  8.  case 'file':  $obj = new Template($value); break;
  9.  case 'setvar'
  10.  if(is_array($value) && array_key_exists('file', $value))
  11.  { $obj->setvar(Generate_VIEW_HTML ($value));
  12.  }
  13.  else
  14.  {
  15.  $obj->setvar($value);
  16.  }
  17.  break;
  18. }
  19. return $obj->htmlout();
  20. }
  21.  
  22. echo Generate_VIEW_HTML ($tablica);
  23. ?>


Ja to na takiej zasadzie to robie. Oczywiscie to tylko schemat w praktyce taka klasa zawiera duzo funkcji np zintegrowany cache itd.... oraz opcje w zaleznosci pod jaki system template to robimy. Ja napisalem sobie wlasny.

Daje to nam duzo mozliwosci, bo mozemy robic cache template w jednym miejscu lub inne potrzebne operacje.

Ten post edytował eai 20.10.2006, 15:40:06
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: 25.12.2025 - 21:58