Framework CakePHP

Transkrypt

Framework CakePHP
Framework CakePHP
Andrzej Rydzewski 30.04.2010
1. CakePHP
CakePHP to jeden z najlżejszych i najpopularniejszych frameworków napisanych w języku
obiektowym PHP. Framework udostępniony jest na otwartej licencji X11, dzięki czemu możliwe
jest tworzenie oprogramowania komercyjnego wykorzystując owy framework. Twórcy pisząc
CakePHP inspirowani byli frameworkiem Ruby on Rails, który został napisany w języku Ruby.
Autorzy frameworka za główny cel jaki sobie postawili napisanie tak CakePHP aby służył do
szybkiego budowania aplikacji webowych.
2. Podstawowe wiadomości korzystania z frameworka CakePHP
Model MVC
CakePHP korzysta z wzorca projektowego MVC. Wzorzec ten wymaga od programisty aby
podzielił aplikację 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. 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 (jeżeli tego wymagał widok) przekazywane są dla widoku.
Framework CakePHP narzuca konwencje nazw tabel i klas. Wszystkie nazwy powinny być
pisane w języku angielskim.
Konwencja nazewnictw
Nazwy tabel powinny zaczynać się małą literą oraz być w liczbie mnogiej. Tabele nazywane
z dwóch lub większej liczby słów, powinny być rozdzielone znakiem podkreślenia np.
'latest_article'. Pola w tabeli natomiast powinny być liczbie pojedynczej.
Plik reprezentujący dany model powinien zostać napisany w katalogu 'app/models'. Nazwa
pliku powinna zaczynać się małą literą i 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ć przedrostek '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. Instalacja frameworka
Aby zacząć pracę z frameworkiem należy pobrać źródła frameworka ze strony domowej
projektu http://cakephp.org. Ściągnięte źródła zależy rozpakować w docelowym katalogu
wyświetlania strony internetowej, np. dla systemu Ubuntu Gnu/Linux w wersji 10.04 jest to katalog
/var/www.
Aby można było skorzystać z danego frameworka należy go uprzednio odpowiednio
skonfigurować.
Pierwszym krokiem jest zmiana uprawnień zapisu do katalog app/tmp. Dla systemu Gnu/Linux
to polecenie:
chmod o+w app/tmp
W pliku konfiguracyjnym frameworka CakePHP app/config/core.php należy zmienić dane
dotyczące szyfrowania danych. Należy odszukać linie która zawiera słowo 'Security.salt' i zmienić
na własną. Przykładowa linia:
Configure::write('Security.salt', 'SDFJFJfkasjfjpasfjlasdf@#$@RU*Fpskflasfu87');
Ostatnim krokiem jaki należy wykonać aby można było korzystać z frameworka to konfiguracja
połączenia z baza danych. Aby tego dokonać wystarczy skopiować przykładowy plik utworzony
przez programistów i odpowiednio go wypełnić.
cp app/config/database.php.default appt/config/database.php
Przykładowa konfiguracja połączenia z baza danych:
class DATABASE_CONFIG {
var $default = array(
'driver' => 'mysql', /* nazwa sterownika bazy z jaką framework będzie się komunikować */
'persistent' => false,
'host' => 'localhost', /* nazwa hostu z jaką framework będzie łączyć się */
'login' => 'rydz', /* nazwa użytkownika który ma dostęp do konfigurowanej bazy */
'password' => '377WKEHm7zVSby5U', /*hasło do bazy */
'database' => 'cake', /* nazwa bazy danych */
'prefix' => '',
);
}?>
4. Korzystanie z CakePHP
W dalszej części zaprezentuję jak korzystać z frameworka CakePHP. Zostanie to
przedstawione dla przykładowej bazy o nazwie 'cake' (wcześniej była pokazana konfiguracja tej
bazy), która zwiera jedną tabele o nazwie 'posts'.
Tabela składa się z trzech pól:
– id – przechowuje numer identyfikacyjny rekordu
– title – tytuł wiadomości
Zdjęcie 1. Schemat tabeli 'posts'
2
– body – treść wiadomości
Pierwszym krokiem jaki trzeba wykonać to poinformowanie CakePHP o tym, że tabele
istnieją. 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 korzystać z języka PHP w wersji 4.
Kolejnym krokiem jest utworzenie pliku z klasa kontrolera. Plik powinien nazywać się
'posts_controller.php', a jego przykładowa treść została zaprezentowana 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
zmienną '$posts' dla widoku.
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 napisać
w katalogu 'app/views/posts' pod nazwa index.ctp. Przykładowa treść pliku:
<?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'.
Napisanie pliku widoku, było ostatnim krokiem do tego aby można było wyświetlić dane
z tabeli 'posts'. W przeglądarce internetowej wystarczy wejść na adres aplikacji dodając do adresu
nazwę kontrolera (np. http://localhost/posts) i oczom powinien ukazać się podobny widok do tego
przedstawionego na zdjęciu 2.
3
Zdjęcie 2. Widok wiadomości
5. 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 korzystania z tego frameworka zauważy, że pisanie
aplikacji z wykorzystaniem CakePHP jest znacznie szybsze.
4

Podobne dokumenty