Komponenty Zend Frameworku (ZF) používajú veľa návrhových vzorov. Ich výhodou je, že zjednodušujú komunikáciu medzi vývojármi. Návrhový vzor je určitý postup na riešenie problému, ktorý sa pravidelne vyskytuje pri vývoji aplikácií. Jeden z najpoužívanejšich v Zend Frameworku, ale aj ďalších frameworkoch, je MVC architektúra.
MVC architektúra
MVC (Model View Controller) architektúra je základom moderných frameworkov určených pre webové aplikácie. Ide o rozdelenie aplikácie do troch čiastkových komponent: údaje (Model), zobrazenie (View) a riadenie (Controller). Každá z týchto komponent sa stará o určitú časť aplikácie.
Na obrázku vidíte priebeh požiadavky v MVC architektúre. HTTP požiadavka je poslaná na server. Prijme ju radič a ďalej spracuje. Z požiadavky radič zistí, ktorý model má byť oslovený a požaduje od neho údaje (1). Niekedy pošle radič modelu údaje získané od užívateľa a požaduje ich uloženie. V tomto prípade dostane radič od modelu odpoveď o úspechu alebo zlyhaní operácie. (2). Radič odošle údaje správnemu pohľadu, ktorý zabezpečí výpis (3). V niektorých implementáciach sa môže stať, že pohľad požaduje údaje od modelu, resp. model informuje pohľad o zmene údajov (4). Nakoniec vytvorí pohľad výpis údajov a radič ho pošle naspäť prehliadaču.
Priečinky v projekte ZF
Veľkou výhodou ZF je jeho flexibilita aj pri ukladaní súborov. Bolo by možné súbory ukladať do jedného priečinka, ale určite je lepšie udržiavať medzi nimi prehľad a radiť ich do priečinkov. Autori ZF doporučujú štruktúru, ktorej sa je dobre držať.
application – Priečinok je jadrom aplikácie. Obsahuje priečinky pre konfiguráciu (config), radiče (controllers), formuláre, modely (models) , moduly, layout, pohľady (views) a aj súbor Bootstrap.php
(o tom sa dozviete viac v ďalšej časti)
library – V tomto priečinku sa nachádzajú súbory ZF, ale je určený aj pre vlastné rozšírenia.
public – Obsahuje súbory, ktoré sa majú byť verejné dostupne cez webový prehliadač, teda CSS, JavaScript súbory, ale aj index.php
Hello World
Spomenutú MVC architektúru si precvičíte na jednoduchom príklade, ktorý má za úlohu vypísať Hello world.
Radič
Zend_Controller_Action zodpovedá za vykonávanie všetkých akcií v Zend Framework aplikáciach. Každý action controller obsahuje jednu alebo viacej metód akcií, v ktorých prebieha komunikácia s modelom a pohľadom. V rámci jedného action controlleru môžete vytvoriť ľubovoľný počet akcií.
Trieda controlleru v ZF musí byť pomenovaná nasledovné: MenokontroleraController.Všimnite si, že meno controllera začína veľkým pismenom Menokontrolera. Táto trieda musí byť uložena v súbore MenokontroleraController.php.
Vytvorte controller pre Helloworld. aplicationcontrollerHelloworldController.php
.
<?php class HelloworldController extends Zend_Controller_Action { public function init() { /* Initialize action controller here */ } public function indexAction() { // action body } }
Pre Action, ktoré sa nachádzajú vo vašom Controlleri, si vytvorte pohľad (súbor bude zatiaľ prázdny). aplicationviewsscriptshelloworldindex.html
Každa akcia je public funkcia v triede controllera a musí byť pomenovaná menoakcieAction. menoakcie začína malým písmenom ale aj ostatné písmena sú male.
Teraz si vytvorte novú akciu hello. A nezabudnite si vytvoriť aj pohľad (súbor bude tiež zatiaľ prázdny) aplicationviewsscriptshelloworldhello.html
public function helloAction () { $helloRetazec= 'Hello world'; echo $helloRetazec; }
Keď v prehliadači otvoríte http://zend.test/helloworld/hello, kde helloworld je váš controller a hello je action, ktorú voláte. Vypísali ste hello world pomocou controlleru.
Init sa vykonáva vždy pri volaní controlleru a ak do prehliadača vložíte cestu http://zend.test/helloworld obsahujúcu len controller a neobsahujúcu akciu, vykoná sa automatický indexAction.
V ďalšej časti príkladu aplikácia vypíše text pomocou modelu. Vytvorte model applicationmodelsHelloworld.php
<?php class Application_Model_Helloworld { public function sayHello ($name) { return '2. Ahoj, ' .$name . '! <br>'; } }
Do action helloAction pridajte nasledovné riadky.
$helloWorldModel = new Application_Model_Helloworld(); echo $helloWorldModel->sayHello('Peter');
Controller poslal modelu sayHello parameter Peter. A ten vráti 2. Ahoj, Peter!
Ako tretie si vyskúšajte vypísanie textu pomocou View. Do action helloAction doplňte nasledovné riadky.
$helloWorldModel = new Application_Model_Helloworld(); $this->view->helloRetazec = '3.' . $helloWorldModel->sayHello('Peter');
applicationviewsscriptshelloworldhello.phtml
<?php echo $this->helloRetazec; ?>
V ďalšej časti seriálu sa dozviete, ako pracovať s nástrojom Zend_Tool, zistíte načo slúži bootstrap.php a budete si môcť pomocou príkladu vyskúšať vytvoriť webaplikáciu slúžiaci na blogovanie.
Přehled komentářů