Robert.BrainUsers.net

CakePHP framework - szkielet twojej aplikacji WWW

Programiści na co dzień stają przed typowymi problemami, które trzeba rozwiązywać w każdej tworzonej przez siebie aplikacji: połączenie z bazą danych, autentykacja i autoryzacja, system szablonów, walidacja formularzy itd. Oczywiście zawsze można napisać własne biblioteki, które obsłużą konkretne zadania. Jednak problemy te są typowe dla większości aplikacji i opracowano już konkretne wzorce rozwiązań. Jeśli chcemy skupić się na programowaniu swojego projektu zamiast ponownym odkrywaniu Ameryki, potrzebny nam szkielet, który zapewni gotowe rozwiązania programistyczne typowych problemów. Inaczej mówiąc, potrzebny nam framework.

Społeczność Open Source napisała dla języka PHP kilka świetnych frameworków, które dostarczają gotowe rozwiązania i z reguły tworzą nową warstwę abstrakcji nad obiektami takimi jak baza danych, serwer WWW czy system plików. Szkielet wystarczy tylko dobrze skonfigurować, a dalej program sam się pisze (no prawie). :P

W artykule postaram się przedstawić jeden z frameworków dla języka PHP: CakePHP.

Przeczytaj tutorial CakePHP

Prosty, ale kompleksowy

CakePHP jest frameworkiem, który na pierwszym miejscu stawia proste i intuicyjne programowanie, co jest konsekwencją kilku konwencji, którzych należy się bezwzględnie trzymać. Jednocześnie od razu pod maską mamy do dyspozycji dobre, gotowe do rozbudowy narzędzia takie jak:

  • model danych oparty o wzorzec Active Record i CRUD, abstrakcja relacji między modelami,
  • obsługa sesji,
  • autentykacja i autoryzacja, lista kontroli dostępu (ACL),
  • stronicowane (paginacja) wyników zapytania do modelu danych,
  • router (obsługa customowych adresów URL) i wsparcie dla mod_rewrite,
  • tworzenie i walidacja formularzy,
  • lokalizacja aplikacji i internacjonalizacja treści,
  • kilka mechanizmów cache'owania,
  • obsługa, debugowanie i logowanie błędów.

Ponadto, Cake jest dobrze udokumentowany, publikuje jasne i czytelne API oraz posiada społeczność gotową do dzielenia się własnymi pomysłami i udzielania pomocy.

MVC, głupcze!

Najważniejszą własnością Cake'a jest implemetancja pewnej odmiany wzorca MVC (Model-View-Controller). Pełna implementacja MVC w aplikacjach webowych nie jest możliwa, ze względu na specyfikę technologii - bezstanowy protokół HTTP. Mimo wszystko Cake pozwala oddzielić logikę biznesową od wyglądu strony, ale także wydziela osobne miejsce na logikę danych. Do tego celu służą trzy klasy.

  • Model jest warstwą abstrakcji dla pojedynczej encji danych. Służy do pobierania, kasowania i aktualizacji danych z różnych źródeł (baza danych, pliki, webservice), a także przeprowadza walidację. Możliwe jest definiowane relacji pomiędzy modelami, tworzenie wyzwalaczy oraz generowanie nawet skomplikowanych zapytań korzystając jedynie z abstrakcyjnej składni Cake'a wykorzystując zwykłe tablice w PHP.
  • Kontroler jest bezpośrednio związany z jednym, odpowiadającym mu modelem. Służy do obsługi akcji użytkownika, wybierania potrzebnych danych z modelu i przekazywania przetworzonych wyników do widoku. Akcja jest po prostu metodą kontrolera.
  • Widok służy do prezentacji danych dostarczonych przez kontroler.

Ponadto istnieje jeszcze kilka klas, które dopełniają funkcjonalność frameworka rozszerzając podstawowe funkcje modeli, kontrolerów oraz widoków:

  • behaviory do wykorzystania w wielu modelach, zmieniające zachowanie modelu oraz obsługujące dodatkowe akcje i wyzwalacze,
  • komponenty do wykorzystania w wielu kontrolerach,
  • layouty, czyli nadrzędne szablony dla widoków,
  • helpery impementujące narzędzia potrzebne w wielu widokach,
  • elementy do wyświetlania w wielu widokach,
  • pluginy, czyli sub-aplikacje łatwe do przenoszenia między innymi Cake'owymi aplikacjami.

Diagram przepływu sterowania
Rys. 1. Diagram przepływu sterowania

Framework z bajki

Oczywiście, jak wszystko, Cake posiada też pewne wady. W porównaniu do lekkich, aczkolwiek mniej rozbudowanych frameworków takich jak CodeIgniter czy KohanaPHP, CakePHP jest cięższy i zabiera więcej zasobów. Spowodowane jest to po części faktem, że aktualna stabilna wersja 1.3 jest kompatybilna jeszcze z PHP 4, tak więc niektóre rozwiązania użyte w silniku framworka są już trochę przestarzałe. Mimo iż Cake jest napisany w pełni obiektowo, to nie jest wykorzystywana nowoczesna obiektowość rozwinięta w PHP 5 i nie używa się klasy PDO (PHP Data Objects) do połączenia z bazą danych. Natomiast zrozumiałe jest, że  bardzo rozbudowane frameworki typu Symfony, oferujące większe możliwości, są jeszcze cięższe niż Cake.

Mimo powyższych faktów, dobrze napisana za pomocą Cake'a aplikacja nie sprawia trudności w utrzymaniu i rozbudowie. Dodatkowo stosując akceleratory PHP takie jak APC czy xDebug oraz cache'ując i optymalizując zapytania SQL można znacznie przyspieszyć działanie każdego frameworka. Czekamy na wydanie wersji 2.0, która ma być przystosowana do nowoczesnego PHP 5.

Odnośniki:

Zobacz także:

Komentarze

Na razie brak komentarzy, Twój będzie pierwszy.

Dodaj komentarz