Table of Contents : The Manual

Objaśnienie architektury Model-View-Controller

Ogólny opis

Dobrze napisane aplikacje CakePHP są tworzone według wzorca projektowego MVC (Model-Widok-Kontroler, ang. Model-View-Controller). Programowanie z zastosowaniem wzorca MVC rozbija aplikację na trzy zasadnicze części. Model reprezentuje dane aplikacji, widok generuje prezentację danych modelu, a kontroler obsługuje i przekazuje żądania użytkowników.

OBRAZEK

Rysunek 1: Przykładowy przebieg wykonywania żądania MVC

Rysunek 1 pokazuje przykład realizacji żądania MVC w CakePHP. Dla zilustrowania, załóżmy że użytkownik o nazwie Ricardo właśnie kliknął na odnośnik "Kup Ciacho!" na głównej stronie twojej aplikacji.

  1. Ricardo klika odnośnik wskazujący na http://www.przyklad.pl/cakes/buy i jego przeglądarka wysyła żądanie do serwera www.
  2. Dyspozytor (ang. dispatcher) analizuje URL żądania (/cakes/buy) i przekazuje je do odpowiedniego kontrolera.
  3. Kontroler odpowiada za logikę aplikacji. Dla przykładu, może sprawdzić czy użytkownik jest zalogowany.
  4. Kontroler używa również modeli, aby uzyskać dostęp do danych aplikacji. Z reguły modele reprezentują tabele w bazie danych, ale mogą równie dobrze reprezentować wpisy LDAP lub pliki na dysku. W tym przykładzie, kontroler używa modelu w celu wyciągnięcia informacji o ostatnich zakupach użytkownika Ricardo z bazy danych.
  5. Gdy kontroler przetworzy wyciągnięte dane, przekazuje je do widoku. Widok przygotowuje te dane do wyświetlenia użytkownikowi. Widoki w CakePHP mają najczęściej format HTML, ale mogą one z równym powodzeniem być w formacie PDF, dokumentu XML lub obiektu JSON, w zależności od twoich potrzeb.
  6. Po tym jak widok użył danych z kontrolera do wygenerowania zawartości, zawartość ta jest wysyłana do przeglądarki Ricardo.

Prawie każde żądanie wysyłane do twojej aplikacji będzie przebiegać w podobny sposób. W dalszej części podręcznika uzupełnimy ten proces o szczegóły specyficzne dla Cake, więc miej go na uwadze, gdy będziemy iść dalej.

Korzyści

Czemu warto stosować MVC? Ponieważ jest to sprawdzony i pewny wzorzec projektowy, który czyni aplikację łatwym w utrzymaniu, modularnym, szybko rozbudowywalnym pakietem. Rozbijanie zadań aplikacji na oddzielne modele, widoki i kontrolery powoduje, że aplikacja ma przejrzystą strukturę. Łatwo dodać nową funkcjonalność, a dodanie nowego wyglądu dla starej funkcjonalności to pestka. Modularna architektura z separacją widoku od logiki aplikacji pozwala developerom i grafikom pracować równolegle, włączając w to możliwość szybkiego prototypowania. Separacja umożliwia także developerom dokonywania zmian w jednej części aplikacji, nie naruszając pozostałych.

Jeśli nie budowałeś jeszcze aplikacji w taki sposób, przyzwyczajenie się do tej metody wymaga nieco czasu. Jesteśmy jednak pewni, że gdy już zbudujesz swoją pierwszą aplikację w CakePHP, nie będziesz chciał stosować żadnej innej.