Wzorzec MVC na przykładzie CakePHP

1 Wzorzec MVC na przykładzie CakePHPKamil Chaciak ...
Author: Karol Skowroński
0 downloads 15 Views

1 Wzorzec MVC na przykładzie CakePHPKamil Chaciak

2 Czym jest wzorzec architektoniczny?Wzorzec architektoniczny jest uznanym i sprawdzonym sposobem rozwiązania danego problemu z zakresu architektury oprogramowania. Wzorce architektoniczne określają ogólną strukturę danego systemu informatycznego, elementy z jakich się składa, zakres funkcji realizowany przez dany element jak również zasady komunikacji pomiędzy poszczególnymi elementami.

3 Model-View-Controler (MVC)Multi tier architecture Three tier architecture Presentation-abstraction-control Blackboard system Service Oriented Architecture (SOA) Peer-to-peer (P2P) Implicit invocation Pipeline Naked objects

4 MVC – Model View ControllerSłuży do organizowania struktury aplikacji posiadających graficzne interfejsy użytkownika. Wiele prac traktuje go jako pojedynczy wzorzec, lecz może on być także traktowany jako złożony wzorzec wykorzystujący idee wzorców prostych, takich jak Obserwator, Strategia czy Kompozyt. MVC nie był traktowany jako samodzielny wzorzec również w pracy „Design Patterns: Elements of Reusable Object-Oriented Software“ autorstwa „Bandy Czworga”.

5 Model-View-Controller zakłada podział aplikacji na trzy główne warstwy:Model – jest pewną reprezentacją problemu bądź logiki aplikacji. Kontroler – przyjmuje dane wejściowe od użytkownika i reaguje na jego poczynania, zarządzając aktualizacje modelu oraz odświeżenie widoków. Widok – opisuje, jak wyświetlić pewną część modelu w ramach interfejsu użytkownika. Może składać się z podwidoków odpowiedzialnych za mniejsze części interfejsu.

6

7 Modele Modele są reprezentowane przez klasy, tworzące całą warstwę. Powinny być responsywne, na zarządzanie prawie wszystkim dotyczącym danych, między innymi walidacją, zapisywaniem, edycją. Model ten jest podzielony na tabele (table) i encje (entity). Encja reprezentuje obiekt danej tabeli. Jej podstawową cechą jest to, że jest rozróżnialna od innych encji.

8 Klasy modeli w CakePHP wykorzystują wiele ciekawych funkcji, które pomagają wyciągnąć z bazy interesujące nas rekordy. Mamy też możliwość sortowania, paginacji i filtrowania danych. Najcześciej używa się funkcji find(string $type = 'first', array $params =array()). Dzięki niej możemy pobrać interesujące nas rekordy.

9 Kontrolery Kontrolery są pośrednikami między modelami a widokami, a nawet między użytkownikiem a widokami i modelami. Zadaniem kontrolera jest odbiór, przetworzenie oraz analiza danych wejściowych od użytkownika. Po przetworzeniu odebranych danych kontroler może wykonać następujące czynności: zmienić stan modelu, odświeżyć widok, przełączyć sterowanie na inny kontroler. Każdy kontroler posiada bezpośrednie wskazania na określone modele i widoki, z którymi współpracuje, a jednocześnie w aplikacji może istnieć wiele kontrolerów. W danym momencie tylko jeden z nich steruje aplikacją.

10 W CakePHP głównym kontrolerem naszej aplikacji jest klasa AppController, po której dziedziczą wszystkie inne kontrollery. Funkcje w kontrolerach są nazywane akcjami, aby wykorzystać akcję danego kontrolera, należy w adresie umieścić nazwę kontrolera i akcji np. Po wejściu na powyższy adres, CakePHP zacznie przeszukiwać kontroler w poszukiwaniu akcji, którą ma wykonać.

11

12 Widoki Widok jest odpowiedzialny za prezentację danych, otrzymanych od kontrolera, w obrębie graficznego interfejsu użytkownika. Może składać się z podwidoków zarządzających mniejszymi elementami składowymi. Przeważnie są to generowane strony w formie HTML, XML lub JSON, ale można też wygenerować plik PDF.

13 CakePHP zapewnia różne Helpery i funkcje ułatwiające generowanie, stron. Nazwa pliku z widokiem powinna być taka sama jak nazwa akcji. Gdyż CakePHP ma domyślnie ustawione renderowanie plików o takich nazwach. Można to jednak zmienić w kontrolerze. Cake posiada oddzielne foldery na widok akcji poszczególnych kontrolerów i pliki definiujące główny układ strony.

14 Layout Layout czyli układ strony zawiera kod, który „owija” się wokół widoku. Wszystko co powinno byc dostępne w każdym z widoków powinno tu być umieszczone. To który układ chcemy wybrać, należy ustawić w kontrolerze.

15

16 Dziękuję za uwagę https://book.cakephp.org/3.0/en/index.htmlhttps://pl.wikipedia.org/wiki/Model-View-Controller