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