1.3 Objaśnienie architektury Model-View-Controller
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.
- Ricardo klika odnośnik wskazujący na http://www.przyklad.pl/cakes/buy i jego przeglądarka wysyła żądanie do serwera www.
- Dyspozytor (ang. dispatcher) analizuje URL żądania (/cakes/buy) i przekazuje je do odpowiedniego kontrolera.
- Kontroler odpowiada za logikę aplikacji. Dla przykładu, może sprawdzić czy użytkownik jest zalogowany.
- 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.
- 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.
- 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.
