Sprawozdanie z Seminarium Dyplomoweg

Transkrypt

Sprawozdanie z Seminarium Dyplomoweg
PAŃSTWOWA WYŻSZA SZKOŁA ZAWODOWA
W ELBLĄGU
INSTYTUT INFORMATYKI STOSOWANEJ
Sprawozdanie z Seminarium Dyplomowego
Temat: Ułatwienia wynikające z zastosowania
Frameworku CakePHP podczas budowania stron internetowych
autor:
Lewandowski Marek
Elbląg, 25.10.2010
1. Wstęp
Budowa rozbudowanych serwisów internetowych wiąże się z koniecznością
ponoszenia dużych nakładów pracy, a także tworzenie obszernych ilości plików kodu
programu. Tworząc strony internetowe od podstaw, programista musi zaprojektować
wszystkie funkcjonalności samodzielnie.
Obecnie w Internecie dostępnych jest wiele aplikacji i systemów
umożliwiających przyspieszenie i nierzadko ułatwienie budowania stron
internetowych. Aplikacje te często udostępniają projektantowi zbiór gotowych funkcji,
dzięki którym możliwe jest zaoszczędzenie czasu projektowania serwisu. Do
systemów ułatwiających budowę stron internetowych, można zaliczyć CakePHP.
2. Szkielet programistyczny – CakePHP
CakePHP jest to struktura programistyczna służąca do budowy aplikacji
internetowych. Struktura ta nazywana jest z języka angielskiego frameworkiem i dla
określonego zastosowania oznacza „ramę”. Szkielet programistyczny definiuje
strukturę oraz mechanizm działania aplikacji, a także udostępnia biblioteki i
komponenty służące do wykonywania określonych zadań.
CakePHP jest to wolne oprogramowanie stworzone dla środowiska PHP.
Stosowane jest ono podczas budowy aplikacji internetowych w celu ujednolicenia oraz
przyspieszenia procesu ich budowy. Stosowanie frameworka podczas projektowania
stron www umożliwia autorowi korzystanie z funkcji, które w znacznym stopniu mogą
wpłynąć na czas wykonywania serwisu. Pliki tworzonej strony oraz baza danych
posiadają określony schemat nazewnictwa oraz rozmieszczenia w serwisie. W celu
korzystania z funkcjonalności CakePHP od autora wymagane jest przestrzeganie zasad
rozmieszczenia kodu i konwencji nazewnictwa. Kod programu udostępniony jest
darmowo na stronie producenta.
Do uruchomienia systemu niezbędne jest posiadanie serwera WWW wraz z
bazą danych. Najpopularniejszą konfiguracją jest użycie serwera Apache oraz
powiązanie z nim bazy danych MySQL. W tak przygotowanym środowisku instalacja
CakePHP jest stosunkowo prosta i najczęściej ogranicza się do sprawdzenia praw
dostępu w katalogu plików tymczasowych frameworka oraz odpowiednim ustawieniu
pliku konfiguracyjnego bazy danych. Struktura folderów systemu przedstawia się
następująco:
• app,
• cake,
• vendors,
• .htaccess
• index.php
Z punktu widzenia programisty strony www najistotniejszym folderem jest
powyżej folder o nazwie app. W nim znajdują się pliki odpowiedzialne za
konfigurację bazy danych, wspomniany powyżej katalog plików tymczasowych i
przede wszystkim foldery, w których umieszczane są pliki budowanego serwisu.
Istotną cechą CakePHP jest działanie w oparciu o wzorzec projektowy MVC1
wykorzystywany w wielu systemach typu framework. Architektura MVC jest
obiektowo zorientowaną koncepcją programistyczną dzielącą aplikację na 3 warstwy.
Podział ten służy uporządkowaniu architektury systemu. Dzięki niemu zmiany
dokonywane w jednej części serwisu nie niosą za sobą konieczności wprowadzania
zmian w pozostałych jego częściach.
Warstwa modelu odpowiedzialna jest za komunikację aplikacji z danymi
serwisu. Inaczej, wyodrębnia on dane jakie chcemy uzyskać z fizycznej bazy danych.
Warstwa widoku odpowiedzialna jest za reprezentację danych uprzednio
pobranych w modelu aplikacji. Widok tworzy instancje klas modelu i wywołuje
metody odpowiedzialne za pobranie odpowiednich danych.
Warstwa kontrolera odpowiedzialna jest za interakcje użytkownika z aplikacją.
Kontroler akceptuje żądanie użytkownika i za pomocą modelu oraz widoku preparuje
dane oraz ich reprezentację.
Proces działania aplikacji stworzonej w oparciu o model MVC przedstawiony
jest na poniższym rysunku. Rysunek przedstawia poszczególne szczeble
przekazywania informacji pomiędzy określonymi warstwami modelu w
przykładowym żądaniu MVC.
Rysunek 1 Schemat działania aplikacji w oparciu o wzorzec MVC
Widoczne na powyższym rysunku poszczególne kroki oznaczają:
1. Wysłanie żądania użytkownika poprzez przeglądarkę internetową do serwera i
przekazanie go do odpowiedniego kontrolera.
2. Przetworzenie żądania użytkownika, wysłanie zapotrzebowania na informację
znajdujące się w bazie danych.
3. Przekazanie informacji potrzebnych do realizacji żądania użytkownika.
4. Przekazanie informacji do widoku w celu reprezentacji wyniku dla użytkownika
zewnętrznego.
5. Przesłanie widoku do przeglądarki użytkownika wysyłającego żądanie.
W CakePHP odpowiednim warstwom przedstawionego powyżej wzorca
odpowiadaja odpowiednie foldery znajdujące się w wspomnianym katalogu app/.
Katalogi te noszą nazwy zgodne z stosowanym wzorcem, czyli „model”, „view”,
„controller”.
1
Model-View-Controller (pol. Model-Widok-Kontroler).
3. Zalety i wady użycia framworka
Omawiany w powyższym opracowaniu system ma na celu przyspieszenie i
usystematyzowanie pracy podczas tworzenia stron internetowych. W tym celu autorzy
frameworka udostępniają zestaw funkcji oraz zasad, którymi winni kierować się
projektanci.
Istotną zaletą omawianego zastosowania jest technologia Scaffoldingu, która z
języka angielskiego oznacza „rusztowanie”. Stosowanie tej techniki umożliwia
błyskawiczne tworzenie i operowanie danymi w fizycznej bazie danych. Dzięki
zastosowaniu tej funkcji tworzenie podstawowych operacji bazodanowych, czyli
dodawanie, usuwanie, aktualizacja oraz czytanie danych jest możliwe poprzez
zastosowanie jednej funkcji.
Używając CakePHP mamy możliwość korzystania z funkcji autoryzacji
użytkowników. Odbywa się to poprzez dołączenie komponentu „auth()”. Hasła
użytkowników dodawanych przy użyciu tego komponentu są szyfrowane za pomocą
algorytmu Message Digest algorithm.
Kolejną zaletą CakePHP jest mechanizm walidacji danych. Mechaniz ten
odpowiedzialny jest za sprawdzenie poprawności oraz bezpieczeństwo danych
wprowadzanych w formularzach. Klasa walidacji w CakePHP zawiera wiele reguł
walidacji, które znacząco ułatwiają sprawdzenie poprawności danych. Korzystanie z
tych reguł umożliwia zaoszczędzenie czasu jaki projektant poświęciłby na napisanie
własnych zasad. Mechanizm ten umożliwia także dodawanie własnych reguł.
CakePHP działa w oparciu o wzorzec MVC jak wspomniano powyżej.
Zastosowanie tego wzorca wpływa korzystnie na przejrzystość kodu budowanego
serwisu. Ułatwia to rozbudowę serwisu a także pozwala projektowanie serwisu dużej
grupie ludzi.
Przedstawione powyżej przykłady to część zalet jakie daję korzystanie z
frameworka podczas budowy serwisu. Niestety stosowanie tej technologii posiada też
wady.
Stosowanie CakePHP wymaga od programisty dużej wiedzy na temat struktury
i zasad działania serwisu. W celu wykorzystania funkcjonalności frameworka
konieczne jest zapoznanie się z obszerną dokumentacją. Aby system działał
poprawnie niezbędne jest dostosowanie się do konwencji nazewnictwa. System
posiada też ograniczenia technologii, których może być wykorzystany.
Przykład:
Przykład obrazuję wykorzystanie funkcji Scaffolding. Funkcja w sposób
automatyczny wyświetli informacje zawarte w określonej tabeli oraz umożliwi
operowanie na nich.
W przykładzie tabela w bazie danych nosi nazwę comment. Aby móc operować na jej
danych należy utworzyć plik modelu o nazwie „comment.php” stanowiący w systemie
reprezentację danych tabeli.
Rysunek 3 Treść pliku modelu
Następnie należy utworzyć kontroler sterujący pracą pliku modelu dla tebali
comments. Kontroler dzięki zastosowaniu funkcji scaffolding automatycznie
wygeneruje widok i wyświetli go w postaci strony html.
Rysunek 3.4 Treść kontrolera
źródło: opracowanie własne
Wynikiem powyższych działań jest wygenerowanie strony HTML
wyświetlającej zawartość tabeli Comments a także umożliwiającej operowanie na niej.
Rysunek 3.5 Strona wyświetlona za pomocą funkcji scaffold
źródło: opracowanie własne
4. Wnioski
Przedstawione w powyższym opracowaniu zalety jakie niesie za sobą
stosowanie frameworku nie są jedynymi zaletami CakePHP. Z punktu widzenia autora
pracy są one jednak istotnymi udogodnieniami w trakcie procesu budowy aplikacji.
Tworzenie aplikacji internetowych za pomocą CakePHP wymaga
dodatkowych nakładów pracy w celu poznania struktury systemu i sposobu jego
działania. Czas budowy serwisów w oparciu o zastosowanie framworku jest jednak
wiele krótszy niż przy budowie serwisu klasycznymi metodami.