Izabela WOŹNICA

8

Click here to load reader

Transcript of Izabela WOŹNICA

Page 1: Izabela WOŹNICA

Izabela WOŹNICA Katedra Inżynierii Komputerowej, Politechnika Koszalińska

E–mail: [email protected]

Zend Framework w dyplomowym projekcie aplikacji internetowej

1. Wprowadzenie Zend Framework jest technologią zyskującą coraz większą popularność wśród twórców aplikacji internetowych. W związku z tym, że programiści potrafiący wykorzystywać jego możliwości w tworzeniu rozbudowanych aplikacji są często poszukiwani na rynku pracy, jest on coraz częściej wybierany jako rama projektowa w projektach dyplomo-wych. Niniejszy artykuł zawiera opis doświadczeń jego autora w zakresie wykorzysta-nia funkcjonalności Zend Framework, które zdobyto w trakcie prac nad inżynierską pracą dyplomową. Omówione zostały najważniejsze zagadnienia, których znajomość konieczna była do podjęcia decyzji o zastosowaniu Zend Framework w projekcie oraz stworzenia modułowej aplikacji w oparciu o tę technologię. Zagadnienia przedstawione zostały na przykładzie bazodanowej aplikacji internetowej wspomagającej pracę wypo-życzalni nośników multimedialnych.

Autorka niniejszego artykułu wyraża podziękowania dla Pana Doktora Walerego Su-słowa z Katedry Inżynierii Komputerowej Politechniki Koszalińskiej, którego pomoc była nieoceniona zarówno przy przygotowywaniu artykułu, jak i przy tworzeniu opisy-wanego projektu dyplomowego, którego Pan Doktor był promotorem.

2. Zend Framework jako wsparcie w procesie wytwarzania oprogramowania

Przy tworzeniu rozbudowanych aplikacji nieocenioną pomoc stanowią frameworki [2] (ramy projektowe), których celem jest usprawnienie procesu wytwarzania oprogramo-wania poprzez udostępnienie szkieletu aplikacji i klas pomocniczych gotowych do wy-korzystania w tworzonym projekcie. Zdecydowanie się na odpowiedni framework może okazać się kluczem do sukcesu. Dobry wybór może usprawnić pracę, a samą aplikację uczynić bardziej wydajną.

Dla aplikacji internetowych tworzonych w języku PHP istnieje kilka popularnych fra-meworków. Do najbardziej znanych należą Symfony, CakePHP, Zend i CodeIgniter.

Przy tworzeniu omawianego projektu zdecydowano się na wykorzystanie Zend Frame-work, będącego dla autora nieniejszego artykułu nową technologią, co spowodowało, że blisko połowa czasu przeznaczonego na realizację projektu została przeznaczona na zaznajomienie się z frameworkiem Zend, z drugiej strony takie podejście umożliwiło zdobycie nowych umiejętności i poszerzenie wachlarza rozwiązań, którymi można dysponować przy kolejnych projektach.

Page 2: Izabela WOŹNICA

Izabela Woźnica 176

Decyzja o wyborze Zend Framework jako ramy projektowej w projekcie została podjęta, po przeanalizowaniu opinii o nim dostępnych zarówno w literaturze jak i na forach inter-netowych. Powody, dla których zdecydowano się na zastosowanie frameworka Zend, to:

• Duża swoboda pozostawiona programiście. Tak samo jak inne ramy projektowe dla języka PHP, Zend automatyzuje i usprawnia prace programistyczne. Wyróżnia go fakt, że jest on nie tyle w pełni gotową strukturą aplikacji, co zestawem powiązanych i świetnie współpracujących ze sobą klas. Ponadto powiązanie klas jest na tyle ela-styczne, że pozostawia programiście dużą swobodę w wyborze gotowych rozwiązań, które można zastosować w projekcie. w zależności od punktu widzenia ta cecha może stanowić zarówno zaletę jak i wadę Zend Framework – z jednej strony pozostawiając duży wybór użytkownikowi stanowi on framework bardzo elastyczny, z drugiej na-tomiast skonfigurowanie fundamentów tworzonego systemu wymaga większego na-kładu pracy i czasu.

• Usprawnienie procesu tworzenia aplikacji. Faktem jest, że poznanie Zend Framework może okazać się czasochłonne, jednak rozwiązania, które niesie on za sobą, w znaczący sposób mogą zwiększyć funkcjonalność tworzonej aplikacji i usprawnić sam proces jej tworzenia.

• Stosunkowo łatwy sposób wdrożenia wzorca MVC (Model – View – Controler) w tworzonych aplikacjach [1]. Interfejs komunikacji pomiędzy elementami poszcze-gólnych warstw zapewnia sam framework. Do projektantów i programistów należy natomiast uzupełnienie powstałej struktury systemu dostosowaną do konkretnego projektu logiką biznesową, opracowanie sposobu zachowania aplikacji oraz stworze-nie odpowiednich widoków i bibliotek pomocniczych.

• Pozostałe cechy frameworka takie jak: dobrze przetestowana baza kodu, obsługa technologii takich jak Ajax, wsparcie dla usług sieciowych (web services), czy bardzo rozbudowana baza ciągle rozwijanych komponentów [2]. Dzięki wspomnianym roz-wiązaniom możliwości Zend Framework stają się jeszcze większe.

Wspomniane cechy Zend Framework są źródłem wielu dyskusji odbywających się na forach internetowych pomiędzy projektantami aplikacji internetowych na temat tego, kiedy warto stosować framework Zend [4]. Uwzględniając doświadczenia nabyte w trakcie realizacji omawianego projektu, można uznać Zend Framework za dobre rozwiązanie, jeżeli ważna jest duża dowolność w wyborze modułów i klas, które zosta-ną wykorzystane w projekcie oraz kontrola nad tworzoną aplikacją, natomiast prioryte-tem nie jest jak najkrótszy czas ukończenia projektu.

3. Początki pracy z frameworkiem Zend Jeżeli nie posiada się wcześniejszego doświadczenia w tworzeniu aplikacji internetowych z wykorzystaniem Zend Framework, opanowanie umiejętności pracy z tą technologią oraz stworzenie fundamentów aplikacji dostosowanych do potrzeb tworzonego systemu może być procesem czasochłonnym. w przypadku omawianego projektu czynności te pochłonę-ły blisko 50% czasu przeznaczonego na realizację tematu pracy dyplomowej.

Page 3: Izabela WOŹNICA

Zend Framework w dyplomowym projekcie aplikacji internetowej 177

Aby korzystać z Zend Framework, należało stworzyć samodzielnie strukturę katalogów projektu lub wykorzystać do tego celu dostarczone przez twórców frameworka narzędzie Zend Tool. Drugie rozwiązanie uznano za bardzo przydatne, w szczególności dlatego, że zautomatyzowanie niektórych czynności może pozwolić, początkującemu użytkownikowi tej technologii, uniknąć błędów, które mogłyby się pojawić na samym początku prac i które mogłyby znacząco wpłynąć na ich opóźnienie. Jako środowisko programistyczne dla omawianego projektu wybrano aplikację NetBeans, ponieważ posiadano już doświad-czenie w pracy z nią. Okazało się, że środowisko to umożliwia zintegrowanie z nim wspomnianego wcześniej narzędzia Zend Tool, co jest rozwiązaniem bardzo komforto-wym. Oczywiście można znaleźć także inne środowiska programistyczne współpracujące z Zend Framework, takie jak Eclipse, Aptana Studio czy Zend Studio. Trwają także prace nad środowiskiem RAD dedykowanym dla Zend Framework [6].

4. Opis architektury aplikacji Jak wspomniano wcześniej, Zend Framework jest bogatym zbiorem współpracujących ze sobą klas. Klasy, których znajomość jest niezbędna do pracy z frameworkiem, są to przede wszystkim klasy kontrolerów, modeli oraz klasa Bootstrap umożliwiająca dopa-sowanie konfiguracji aplikacji do własnych potrzeb. Muszą one zostać wykorzystane w większości projektów opartych na frameworku Zend, ponieważ są związane z jego prawidłowym funkcjonowaniem.

Standardowa aplikacja Zend Framework składa się z modeli, widoków i kontrolerów. Modele są klasami języka PHP zapewniającymi komunikację z bazą danych. Kontrole-ry, tak jak modele, są klasami PHP, jednak ich zadaniem jest kontrolowanie reakcji programu na wszystkie zdarzenia zachodzące w aplikacji. Widoki są domyślnie plikami z rozszerzeniem phtml, które zawierają kod prezentacji strony, a ich treść tworzona jest za pomocą języka (X)HTML. Dodatkowo pliki widoków mogą zawierać skrypty CSS, JavaScript, itp.

Omawiana aplikacja składa się z dwóch modułów: modułu Klienta i modułu Pracownika. Choć domyślnie Zend Framework ma wyłączoną obsługę modułów, wspiera on modula-ryzację tworzonego oprogramowania, jeżeli zostanie odpowiednio skonfigurowany. Dla każdego z modułów w aplikacji utworzono oddzielne kontrolery i widoki, ponieważ funk-cje tych modułów nie powielają się. Modele w tworzonym projekcie są natomiast współ-dzielone przez moduły. Ma to uzasadnienie w fakcie, że obydwa moduły korzystają ze wspólnej bazy danych i z tych samych jej tabel, a więc wszystkie modele reprezentujące tabele bazy danych mogą być dostępne jednocześnie dla modułu Pracownika i modułu Klienta. Sytuacja taka niesie za sobą konieczność wydzielenia modeli z modułów.

Na rysunku 1 zaprezentowano poglądowy schemat standardowej architektury aplikacji stworzonej w Zend Framework, natomiast rysunek 2 prezentuje strukturę jaką uzyskano w omawianym projekcie.

Na modele składają się w omawianej aplikacji dwie rodziny klas: klasy dziedziczące po klasie nadrzędnej Zend_DbTable_Abstract oraz klasy potomne dla Zend_DbTable_Row. Wspomniane klasy bazowe są elementami wchodzącymi w skład Zend Framework. Klasy wywodzące się z Zend_DbTable_Abstract reprezentują w aplikacji tabele bazy

Page 4: Izabela WOŹNICA

178

danych, natomiast kczy rekord konkretnej tabeli.

Każda klasa reprezentująca tabelę bazy danych może posiadać odpowiednie właściwści dziedziczone zmiędzy poszczególnymi klasami odpowiadające relacjom pomiędzy tabelami bazy danych. Dzięki temu możliwe jest korzystanie zmetod pozwalających na automatyczne pobranie odpowiadających sobie rekordów z bazy danych. Klasy warczęsto wykonywane w

Rys. 1. Poglądowy schemat architektury domyślnej aplikacji Zend Framework

Fig. 1. Illustrative architecture diagram of the default Zend Framework appl

Rys. 2. Poglądowy schemat architektury opisywanej aplikacji

Fig. 2. Illustrative architecture diagram of the described application

W celu podziału aplikacji na dwa moduły dokonano rozdziału warstwy kontrolerów i widoków, przypisując każdemu zwidoków. Wszystkie klasy kontrolerów dziedziczą po wchodzącej wwork klasie nadrzędnej dla kontrolerów dostępnej pod nazwą Metody kontrolerów nazywane są akcjami. Domy

Izabela Woźnica

danych, natomiast klasy dziedziczące po Zend_DbTable_Row odzwierciedlają pojedyczy rekord konkretnej tabeli.

Każda klasa reprezentująca tabelę bazy danych może posiadać odpowiednie właściwści dziedziczone z klasy nadrzędnej, za pomocą których można definiować relacje p

dzy poszczególnymi klasami odpowiadające relacjom pomiędzy tabelami bazy danych. Dzięki temu możliwe jest korzystanie z udostępnianych przez Zend Framework metod pozwalających na automatyczne pobranie odpowiadających sobie rekordów

bazy danych. Klasy warstwy modeli zostały uzupełnione metodami realizującymi często wykonywane w aplikacji operacje na danych.

Rys. 1. Poglądowy schemat architektury domyślnej aplikacji Zend Framework

Fig. 1. Illustrative architecture diagram of the default Zend Framework appl

Rys. 2. Poglądowy schemat architektury opisywanej aplikacji

Fig. 2. Illustrative architecture diagram of the described application

W celu podziału aplikacji na dwa moduły dokonano rozdziału warstwy kontrolerów widoków, przypisując każdemu z modułów oddzielny zbiór klas kontrolerów i

widoków. Wszystkie klasy kontrolerów dziedziczą po wchodzącej w skład Zend Framwork klasie nadrzędnej dla kontrolerów dostępnej pod nazwą Zend_Controller_Action

Metody kontrolerów nazywane są akcjami. Domyślnie do każdej akcji kontrolera przyp

odzwierciedlają pojedyn-

Każda klasa reprezentująca tabelę bazy danych może posiadać odpowiednie właściwo-klasy nadrzędnej, za pomocą których można definiować relacje po-

dzy poszczególnymi klasami odpowiadające relacjom pomiędzy tabelami bazy udostępnianych przez Zend Framework

metod pozwalających na automatyczne pobranie odpowiadających sobie rekordów stwy modeli zostały uzupełnione metodami realizującymi

Rys. 1. Poglądowy schemat architektury domyślnej aplikacji Zend Framework

Fig. 1. Illustrative architecture diagram of the default Zend Framework application

W celu podziału aplikacji na dwa moduły dokonano rozdziału warstwy kontrolerów odułów oddzielny zbiór klas kontrolerów i plików

skład Zend Frame-Zend_Controller_Action.

ślnie do każdej akcji kontrolera przypi-

Page 5: Izabela WOŹNICA

Zend Framework w dyplomowym projekcie aplikacji internetowej 179

sany jest odpowiadający jej widok prezentujący wynik działania tej akcji. Widoki, czyli pliki warstwy widoków, w przeciwieństwie do modeli i kontrolerów nie są klasami. Kod zawarty w plikach widoków, omawianej aplikacji, został napisany za pośrednictwem języka XHTML.

Aby ujednolicić wygląd aplikacji w każdym z modułów, zdecydowano o uruchomieniu opcji frameworka pozwalającej na korzystanie z mechanizmu szablonów. Każdy moduł omawianej aplikacji posiada osobny plik szablonu, który wchodzi w skład warstwy widoków tego modułu. Zawartość widoków zwracających rezultat działania konkretnej akcji jest umieszczana w odpowiednim miejscu szablonu. Uzupełniony o widok szablon stanowi odpowiedź wysyłaną do użytkownika po wykonaniu akcji w aplikacji.

5. Konfiguracja aplikacji korzystającej z Zend Framework Aby dostosować domyślą konfigurację Zend Framework do własnych potrzeb, należało wprowadzić zmiany w plikach konfiguracyjnych projektu. Najważniejsze są pliki appli-cation.ini oraz bootstrap.php.

Pierwszy z nich zawiera podstawową konfigurację aplikacji. W omawianym projekcie w pliku application.ini opisana została m.in. konfiguracja połączenia z bazą danych, deklaracja przestrzeni nazw, z których klasy zostaną automatycznie załadowane do projektu oraz definicje ścieżek routingu pozwalających na stworzenie aliasów dla stan-dardowych adresów podstron aplikacji.

Plik Boostrap.php w przeciwieństwie do application.ini ma postać klasy. Umożliwia on ustawienie większej ilości parametrów aplikacji. Klasa Boostrap domyślnie nie posiada żadnych metod ani pól, natomiast w celu dodania nowych ustawień należy dopisać własne metody, które zostaną automatycznie wykonane przy uruchomieniu aplikacji. Klasę tę można wykorzystać np. w celu zainicjowania połączenia z bazą danych już przy starcie aplikacji – jeśli połączenie nie zostanie nawiązane, można zwrócić odpo-wiedni komunikat użytkownikowi. w przypadku nie zastosowania tej techniki użytkow-nik dowie się o braku połączenia z bazą dopiero w momencie wywołania metody wy-konującej operacje na bazie danych.

6. Sposób działania aplikacji Przed rozpoczęciem pracy z Zend Framework ważne było postawienie sobie pytania, jak to się dzieje, że użytkownik, wpisując w wyszukiwarce internetowej adres URL odwołujący się do jednej z podstron aplikacji, zostaje przeniesiony do odpowiedniego widoku i uzyskuje wynik działania akcji właściwego kontrolera. w tym miejscu przybli-żona zostanie zasada działania aplikacji od momentu wywołania żądania wyświetlenia konkretnych danych przez użytkownika do zwrócenia wyniku przez aplikację. Wiedza ta była kluczowa w zrozumieniu podstaw funkcjonowania Frameworka Zend.

Po wysłaniu żądania wyświetlenia konkretnej podstrony aplikacji, w pierwszej kolejno-ści uruchomiony zostaje zawsze plik index.php. Jest to jedyny plik PHP aplikacji do-stępny w katalogu publicznym. Wykonanie index.php powoduje automatyczne wywoła-nie obiektu klasy Bootstrap. Obiekt ten, odpowiada za utworzenie przez Zend Frame-

Page 6: Izabela WOŹNICA

Izabela Woźnica 180

work obiektów zasobów, które będą wykorzystywane w dalszej pracy aplikacji. Wspo-mniane zasoby opisane są w pliku konfiguracyjnym application.ini. Odnalezienie wła-ściwego modułu, kontrolera i właściwej akcji, która powinna zostać wywołana, odbywa się za pomocą analizy adresu URL. Domyślnie w adresie tym podawane są trzy parame-try rozdzielone ukośnikiem. Stanowią one nazwy odpowiednio modułu, kontrolera i odpowiedniej akcji. Jednak adresy w tej postaci są trudne do zapamiętania. Dlatego dla aplikacji mogą zostać zdefiniowane w pliku application.ini tzw. ścieżki routingu.

W trakcie tworzenia komponentów po uruchomieniu pliku Boostrap, utworzony został automatycznie obiekt routera. Pozwala on na przeszukiwanie zdefiniowanych przez programistę ścieżek routingu w celu znalezienia odpowiedniej akcji, którą należy wy-wołać. Definiowanie ścieżki routingu polega na określeniu adresu, po wywołaniu które-go router rozpozna, że chodzi właśnie o tę ścieżkę oraz określeniu modułu, kontrolera i akcji, które zostaną przypisane do zdefiniowanej ścieżki. W ten sposób można określić także domyślny moduł, kontroler i domyślną akcję dla aplikacji. Jeśli router nie odnaj-dzie poszukiwanego adresu na ścieżce routingu, tworzony jest obiekt kontrolera błędów.

Jeśli przeszukiwanie ścieżek routingu zakończy się sukcesem, następuje utworzenie obiektu odpowiedniego kontrolera, a następnie wywołanie odpowiedniej akcji. Za zarzą-dzanie obiektami kontrolerów tworzonymi w czasie trwania pracy aplikacji odpowiada Zend Framework. W każdej akcji istnieje możliwość przekazania danych do widoku po-przez zdefiniowanie odpowiednich zmiennych. Po zakończeniu działania akcji generowa-ny jest plik widoku. Jeśli tworzona aplikacja korzysta z mechanizmu szablonów oferowa-nego przez Zend Framework, to wygenerowany w skutek wykonania akcji widok zostaje umieszczony w odpowiednim miejscu szablonu przeznaczonego dla danego modułu. Tak przygotowana strona jest zwracana jako odpowiedź http na żądanie użytkownika.

7. Wykorzystanie opcjonalnych funkcjonalności frameworka Zend udostępnia programistom obszerną bazę pomocniczych modułów i klas, które można wykorzystywać w projektach w celu poszerzenia ich funkcjonalności. Przed przystąpieniem do poszukiwania rozwiązania jakiegoś problemu w trakcie tworzenia aplikacji warto wcześniej sprawdzić, czy gotowe rozwiązanie nie zostało już zaimple-mentowane w frameworku.

Po oprogramowaniu podstawowych funkcji aplikacji, przystąpiono do uzupełniania jej o funkcje dodatkowe. w omawianym projekcie wykorzystano takie opcjonalne klasy frameworka jak Zend_Pdf wraz z klasami pomocniczymi (m.in. Zend_Pdf_Page i Zend_Pdf_Font) do generowania dokumentów w formacie PDF czy Zend_Barcode do generowania kodów w formacie EAN-13 niezbędnych do sprawnej obsługi czytni-ka kodów kreskowych w aplikacji.

Przy tworzeniu mechanizmu logowania warto wykorzystać moduł autoryzacyjny Zend Framework o nazwie Zend_Auth. Poza utworzeniem systemu logowania aplikacji ko-nieczne jest stworzenie zabezpieczenia przed niepowołanym dostępem do podstron, które dostępne mają być tylko dla zalogowanych użytkowników. Tutaj z pomocą przy-chodzi metoda preDispatch(), dostępna w każdym z kontrolerów aplikacji Zend Fra-mework. Wywoływana jest ona jako pierwsza, przed wszystkimi akcjami danego kon-

Page 7: Izabela WOŹNICA

Zend Framework w dyplomowym projekcie aplikacji internetowej 181

trolera. Aby zablokować dostęp do chronionych podstron omawianej aplikacji niepowo-łanym użytkownikom, wszystkie kontrolery, które zawierają akcje generujące te pod-strony, dziedziczą z utworzonej w tym celu klasy bazowej, która w swojej metodzie preDispatch() sprawdza czy użytkownik jest zalogowany i czy ma uprawnienia do wy-konania danej akcji. Jeśli odpowiedź jest negatywna, to użytkownik zostaje przekiero-wany do akcji odpowiadającej za wyświetlenie formularza logowania.

Rys. 3. Diagram klas warstwy kontrolerów modułu Klienta w stworzonej aplikacji

Fig. 3. Class diagram for controllers layer of client's module in created application

Na rysunku 3 przedstawiono diagram klas wchodzących w skład warstwy kontrolerów mo-dułu Klienta omawianej aplikacji. Widoczne jest na nim podział klas na dwie rodziny –dziedziczących po Default_MainController i Default_ClientMainController. Obydwie klasy zostały utworzone samodzielnie i dziedziczą z klasy bazowej dla wszystkich kontrolerów – Zend_Controller_Action. Metoda preDispatch() klas Default_MainController oraz Default_ClientMainController ma za zadanie sprawdzenie czy zalogowany użytkownik ma prawo do wywołania akcji kontrolera dziedziczącego po tej klasie.

8. Podsumowanie W niniejszym artykule starano się przedstawić te cechy Zend Fremwork, które zdaniem autora, powinny pomóc w podjęciu decyzji o zastosowaniu tego frameworka w tworzonym projekcie. Opisane w artykule podstawowe zagadnienia dają pogląd na to, w jaki sposób przebiega tworzenie aplikacji z użyciem Zend Framework oraz jak można zorganizować

Page 8: Izabela WOŹNICA

Izabela Woźnica 182

architekturę tworzonego systemu, aby stworzyć modułową aplikację internetową. Oczywi-ście, przedstawiony przykład wykorzystania Zend Framework obrazuje tylko niewielką część jego możliwości.

Problematyczne jest znalezienie odpowiedniego źródła wiedzy dla początkujących programistów Zend Framework, szczególnie jeśli chodzi o pozycje polskojęzyczne. Jednak dzięki rosnącej popularności frameworka Zend sytuacja ta dynamicznie się zmienia. Wart polecenia jest podręcznik Zend Framework [5], a także książki "Zend Framework od Podstaw" [1] i "Beginning Zend Framework" [3].

Zdaniem autorki niniejszego artykułu warto stosować Zend Framework w projektach dy-plomowych, ponieważ nabyte w ten sposób doświadczenie może okazać się przydatne w późniejszyc projektach. Oprócz pogłębiania wiedzy dotyczącej wykorzystania coraz bar-dziej zaawansowanych funkcjonalności Zend Framework, dobrym rozwiązaniem wydaje się być również rozwijanie umiejętności pracy z innymi frameworkami przeznaczonymi dla języka PHP, aby dla konkretnego projektu móc wybrać najlepsze z dostępnych rozwiązań.

Literatura 1. Gajda W.: Zend Framework od podstaw. Helion, Gliwice 2011. 2. Merkel D.: PHP 5 Narzędzia dla ekspertów. Helion, Gliwice 2011. 3. Padilla A.: Beginning Zend Framework. Apress, New York 2009. 4. http://forum.php.pl/lofiversion/index.php/t70288.html [dostęp 11 kwietnia 2012] 5. http://framework.zend.com/manual/en/ [dostęp 11 kwietnia 2012] 6. http://zend-framework.pl/ [dostęp 11 kwietnia 2012]

Streszczenie Artykuł przedstawia najważniejsze zagadnienia związane z tworzeniem aplikacji interne-towej z wykorzystaniem technologii Zend Framework w ramach projektu dyplomowego. Zawiera on opis rozpoczęcia pracy z Zend Framework oraz konfiguracji projektu, opis architektury aplikacji i sposób jej działania. Zagadnienia przedstawione zostały na przy-kładzie bazodanowej aplikacji internetowej zrealizowanej jako projekt dyplomowy.

Zend Framework in a web application diploma project

Summary The article presents key issues of developing internet application for diploma project using Zend Framework technology. It contains a description of getting started with Zend Framework and the project configuration, description of application architecture and how it works. The issues have been presented as case study of database web application realized as a diploma project.