You are hereCakePHP / Wstęp, MVC oraz właściwości CakePHP
Wstęp, MVC oraz właściwości CakePHP
PHP jest jednym z najbardziej popularnych języków programowania w świecie. Pomimo tego, PHP jest często krytykowany za brak jednolitej konwencji nazewniczej, brak ważnych cech w porównaniu z innymi językami (np. przestrzenie nazw). PHP jest językiem bardzo łatwym do przyswojenia. Jednak w przypadku niedoświadczonych programistów, cechy tego języka mogą prowadzić do powstawania błędów obniżających bezpieczeństwo i wydajność aplikacji.
Z pomocą przychodzą frameworki, które porządkują kod, wprowadzają nowe funkcjonalności i są często wzorowane na już istniejących narzędziach z innych języków programowania takich jak Java czy C++. Ułatwiają i przyspieszają one prace nad aplikacją: upraszczają dołączanie plików, tworzenie połączeń z bazami danych, a przy tym prowadzą do większej przejrzystości kodu, co ułatwia późniejsze zmiany lub poprawę błędów.
Współczesne frameworki to programowanie przede wszystkim obiektowe, które tak na dobre zagościło w wersji PHP5, a wzorowane jest na takich językach jak Java i C++. W internecie można znaleźć wiele framework’ów dla PHP. Każdy z nich ma wiele zalet, ale też i wad. W przypadku CakePHP inspiracją było narzędzie „Ruby on Rails”.
CakePHP i architektura MVC
Czytelnicy, którzy już znają RoR znajdą wiele podobieństw w CakePHP. Po pierwsze, Cake jest oparty na architekturze MVC, która jest zarówno potężna jak i łatwa do opanowania. Kontrolery (controllers), modele (models) i widoki (views) gwarantują zwartość, ale jednocześnie naturalnie separują logikę biznesową od danych i warstw prezentacji.
- Kontrolery (C) zawierają logikę twojej aplikacji. Każdy kontroler może zaoferować inną funkcjonalność; kontrolery pobierają i modyfikują dane przez uzyskanie dostępu do tabel bazy danych poprzez modele, rejestrują zmienne i obiekty, które mogą być używane w widokach.
- Modele (M) to aktywne reprezentacje tabel bazy danych: mogą łączyć się z bazą danych, wykonać zapytanie (jeśli kontroler na to pozwoli) i zapisać dane do bazy. Należy zauważyć, że aby poprawnie stosować architekturę MVC, nie może być żadnej interakcji między modelami a widokami. Cała logika aplikacji jest obsługiwana przez kontroler.
- Widoki (V) możemy opisać jako pliki szablonu, które prezentują użytkownikowi treści takie jak: zmienne, tablice oraz obiekty. Widoki muszą być zdefiniowane w kontrolerze. Widoki nie powinny zawierać złożonej logiki biznesu ale tylko podstawowe struktury kontrolne konieczne by wykonać szczególne operacje, takie jak np. przetwarzanie danych przez foreach.
Dzięki architekturze MVC poprawia się czytelność kodu, co ułatwia weryfikowanie, ulepszanie aplikacji.MVC wymusza także organizację kodu w sposób logiczny i przejrzysty. Staje się on czytelny nie tylko dla twórcy kodu, ale również dla innych developerów.
Struktura katalogów
Struktura katalogów CakePHP:
app/ config/ controllers/ models/ plugins/ tmp/ vendors/ views/ webroot/ cake/ config/ docs/ libs/ vendors/
Powyższa struktura katalogów musi być zachowana. Istnieje oczywiście możliwość zmian konfiguracji i tym samym położenia plików. Cake podobnie jak RoR przedkłada konwencję nad configuracją. To może zaniepokoić kilku developerów, ale jest to dobry kompromis, który może naprawdę przyśpieszyć proces rozwoju aplikacji.
Właściwości CakePHP
CakePHP ma wiele cech, dzięki którym tworzenie aplikacji internetowych może być szybkie i efektywne. Co przemawia za używaniem tego framework'a?
- Aktywna społecznośc użytkowników i developerów
- Elastyczna licencja
- Kompatybilność z PHP4 i PHP5
- Zintegrowany CRUD (szybka prezentacja wyników zapytań wraz z implementacją operacji dodawania, kasowania, aktualizacji rekordów
- Scaffolding - szybkie tworzenie prezentacji wyników
- Architektura Model View Controller (MVC)
- Przyjazne adresy URL
- Wbudowana walidacja formularzy
- Szybkie i elastyczne tworzenie szablonów
- Tworzenie szablonów z wykorzystaniem AJAX, Javascript, Formularzy HTML oraz inne
- Komponenty konta i uprawnień , sesji
- Elastyczność w tworzeniu ACL (access control lists)
- Dbanie o czystość danych
- Elastyczny Cache Widoków
Niestety brak czasu powoduje, że nie mogę teraz dokończyć opisu tego frameworka. Jak tylko znajdę chwilę to dokończę ten artykuł.