sprawozdanie
Transkrypt
sprawozdanie
Framework CakePHP Andrzej Rydzewski 30.04.2010 1. CakePHP CakePHP to lekki framework, który napisany jest w języku obiektowym PHP. Framework udostępniony jest na otwartej licencji X11, dzięki czemu możliwe jest tworzenie oprogramowania komercyjnego wykorzystując ów framework. Twórcy pisząc CakePHP inspirowani byli frameworkiem Ruby on Rails, który został napisany w języku Ruby. CakePHP służy do szybkiego budowania aplikacji webowych. 2. Podstawowe wiadomości potrzebne do korzystania z frameworka CakePHP Model MVC CakePHP korzysta z wzorca projektowego MVC. Wzorzec ten wymaga od programisty podzielenie aplikacji na trzy warstwy: − Model (ang. Model) − Widok (ang. View) − Kontroler (ang. Controller) Model odpowiada za pobieranie i zapis danych, np. w bazie danych. Widok wyświetla dane dla użytkownika aplikacji. Natomiast kontroler jest częścią logiczną, która jest wywoływana jako pierwsza. W zależności jakie dane użytkownik chce uzyskać kontroler może wysłać zapytanie do modelu, aby ten pobrał dane z bazy danych. Zwrócone dane kontroler może przetworzyć, jeżeli tego wymaga widok. Zmodyfikowane dane przekazywane są dla widoku. Konwencja nazewnictw Framework CakePHP narzuca konwencje nazw, tabel i klas. Wszystkie nazwy powinny być pisane w języku angielskim. Nazwy tabel powinny zaczynać się od małej litery oraz być w liczbie mnogiej. Tabele nazywane z dwóch lub większej liczby słów, muszą być rozdzielone znakiem podkreślenia np. 'latest_article'. Natomiast pola w tabeli trzeba określić w liczbie pojedynczej. Plik reprezentujący dany model powinien zostać zapisany w katalogu 'app/models'. Nazwa pliku powinna zaczynać się od małej litery i musi zostać wyrażona w liczbie pojedynczej np. dla tabeli 'posts' nazwa pliku to 'post.php.' Klasa modelu ma również liczbę pojedynczą, jak nazwa pliku, jednak powinna zaczynać się dużą literą. Klasa kontrolera powinna zaczynać się dużą literą i wyrażona w formie mnogiej. Do nazwy trzeba dodać przyrostek 'Controller'. Dla tabeli 'posts' będzie to nazwa klasy 'PostsController'. Plik klasy należy zapisać w katalogu 'app/controllers' pod nazwą 'nazwa_tabeli_controller.php', dla tabeli 'posts' plik będzie posiadać nazwę 'posts__controller.php'. Nazwa pliku widoku powinna być taka sama jak nazwa funkcji w kontrolerze, np. dla funkcji 'index' kontrolera 'posts', plik zapisany będzie w katalogu 'app/view/posts' pod nazwa 'index.ctp'. 1 3. Korzystanie z CakePHP W dalszej części zaprezentuję jak korzystać z frameworka CakePHP. Zostanie to przedstawione dla przykładowej bazy o nazwie 'cake', która zwiera jedną tabele o nazwie 'posts'. Baza ta została zaprezentowana na zdjęciu nr 1. Tabela składa się z trzech pól: − id – przechowuje numer identyfikacyjny rekordu − title – tytuł wiadomości − body – treść wiadomości Pierwszym krokiem, jaki trzeba wykonać jest Zdjęcie nr 1. Schemat tabeli 'posts' poinformowanie CakePHP o tym, że tabela istnieje. Aby tego dokonać trzeba utworzyć plik pod nazwa 'post.php' w katalogu 'app/models' o treści podanej poniżej: <?php class Post extends AppModel { var $name = 'Post'; } ?> Klasa 'Post' musi dziedziczyć po klasie AppModel. Zmienna '$name' jest opcjonalna. Należy z tej zmiennej korzystać, jeżeli aplikacja będzie używać języka PHP w wersji 4. Kolejnym krokiem jest utworzenie pliku z klasą kontrolera. Plik powinien nazywać się 'posts_controller.php', a jego przykładowa treść została przedstawiona poniżej: <?php class PostsController extends AppController { var $name = 'Posts'; function index(){ $this->set('posts', $this->Post->find('all')); } } ?> Jak można zauważyć nazwa klasy składa się z nazwy tabeli z dodanym słowem 'Controller'. Klasa dziedziczy po globalnej klasie AppController. W kontrolerze została zdefiniowana funkcja o nazwie 'index'. Posłuży ona do wyświetlenia wszystkich wiadomości z tabeli 'posts'. Aby można było wyświetlić wiadomości funkcja przekazuje widokowi zmienną '$posts'. Do pobrania wiadomości z tabeli posłużyłem się funkcją 'find', która przyjmuje pierwszy parametr 'all'. Oznacza to, że funkcja ma zwrócić wszystkie dane z tabeli 'posts'. Do wyświetlenia wiadomości trzeba utworzyć widok. Plik widoku należy zapisać w katalogu 'app/views/posts' pod nazwa index.ctp. Przykładowa treść pliku: 2 <?php foreach($posts as $post): ?> <p><?php echo $post['Post']['title']; ?></p> <p style='margin-left: 10px'><?php echo $post['Post'] ['body']; ?></p> <hr><br> <?php endforeach; ?> Pliki ctp mogą zawierać znaczki (X)HTML i bloki kodu napisanego w języku PHP. Jak widać na listingu, do wyświetlenia wszystkich wiadomości użyłem funkcji z języka PHP. Funkcja foreach przechodzi iteracyjne po zmiennej '$posts', która jest typu tablicy. W każdej iteracji przypisuje do zmiennej '$post' dane typu tablicowego. Dane wyświetlane są przez funkcje 'echo'. Ostatnim krokiem do tego, aby można było wyświetlić dane z tabeli 'posts' jest utworzenie pliku widoku.. W przeglądarce internetowej wystarczy wejść na adres aplikacji dodając do adresu nazwę kontrolera (np. http://localhost/posts) i powinien ukazać się podobny widok do tego przedstawionego na zdjęciu nr 2. Zdjęcie nr 2. Widok wiadomości 4. Wnioski Pisanie aplikacji przy wykorzystaniu frameworka CakePHP na pierwszy rzut oka może wydawać się skomplikowane. Programista może poczuć się ograniczony przez narzucenie z góry nazewnictwa klas i tabel. Jednak z czasem używania frameworka zauważy, że pisanie aplikacji z wykorzystaniem CakePHP jest znacznie szybsze. 3