Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: MVC od kuchni
Forum PHP.pl > Forum > Przedszkole
mvc
witam serdecznie

zastanawiam sie nad MVC troche czytalem na ten temat, rowniez na tym forum ale nie widzialem konkretnych przykladow "krok po kroku" wiem na jakiej zasadzie dzialac powinien model MVC ale bardziej interesuje mnie przekazywanie parametrow do poszczegolnych modolow a potem odpowiednie wysylanie tresci.

np. modul do artykulow a modul do downloadu czy czegoos tam innego ma inne parametry itp. rozwiazaniem moze byc przekazywanie calej tablicy globalnej (POST czy GET) ale jak potem uruchamiac autoamtcznie akcje dla roznych zachowan??

moze zna ktos jakis przyklad dobrze to ilustrujacy?
ebe
nie powinieneś operować na gołych GET i POST stwórz sobie klasę np. HttpRequest i tam trzymaj. Takiego requesta mozesz przekazywać do akcji, bądź poprzez wzorzec signleton go sobie utworzyć w akcji. Ten drugi sposób byłby bardziej wskazany. Akcja przekazuje poszczególne potrzebne wartości modelowi a model sobie już tam coś z nimi robi. Raczej niewskazane jest pisanie mega wielkich akcji, a lepiej rozbić sobie zadania na mniejsze akcje.

Uruchmianie akcji jest proste

  1. <?php
  2. class ApplicationController {
  3. .
  4. .
  5. .
  6.  
  7. public function run {
  8.  
  9. $action = new $actionName;
  10.  
  11. $action->perform();
  12.  
  13. }
  14.  
  15. .
  16. .
  17. .
  18. }
  19.  
  20. ?>

Akcja powinna implementować jakiś interfejs akcji z metodą perform, metoda ta jest 'ciałem' akcji i zostaje wykowynana. Tworząc obiekt akcji zmienna $actionName to nazwa akcji wykonywanej, najprościej pobrać ją z adresu (przez HttpRequest) a jeszcze lepiej z configa na podstawie rządania.

W bardziej skomplikowanych przypadkach, można skorzystać ze wzorca Dyspozytora (Dispatcher) który to odpowiada za uruchamianie akcji, ale to już raczej nie na temat będzie smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.