Úvod do Zend Frameworku
31. January 2007
Zrovna nedávno jsem měl s kolegy rozhovor o tom, že si nejraději všechno napíšou sami. Umět si napsat kvalitní kód je jistě potřebná věc, ale myslím, že umět efektivně použít stávající kvalitní řešení je minimálně stejně důležité.
To je také důvod proč jsem začal používat Zend Framework. Také díky tomuto fraworku vyvíjíme ve firmě webové stránky mnohem rychleji a kvalitněji. ZF urazil za svůj rok existence obrovský krok kupředu. Používám ho od verze 0.2, teď je aktuální verze 0.7.
Jak již bylo zmíněno na stránkách Jakuba Vrány ZF vám pomůže vytvořit kvalitní aplikaci. Obsahuje komponenty, pomocí kterých lze pokrýt většinu potřeb pro tvorbu moderního webu v PHP.
Co vám Zend Framework může nabídnout
ZF není
invazivní, můžete tedy použít pouze jeho část, která vám
vyhovuje. Jádrem je MVC. Pro
směřování (routování) požadavků můžete použít jednoduchý
Router
nebo vymazlený RewriteRouter
.
Proč vymazlený? Nabízí úžasně flexibilní routovací možnost (po vzoru
Ruby on Rails). ZF je vlastně kostra, na které můžete stavět svoje
řešení. (Oba typy routerů představím v příštím článku na Hello
World příkladu).
Pokud se rozhodnete použít MVC((Model View Controller – návrchový
vzor pro tvorbu aplikací, kde je potřeba odpovídat na dotaz klienta) bude
jádrem vaší aplikace bootstrap soubor. Obvykle nazvaný
index.php
. Ten slouží pro obsoužení požadavku s podle
best practises je to současně jediný PHP soubor, který by měl být
přístupným přímo. Ostatní PHP soubory by měly být ve chráněných
adresáři (Toto lze dosáhnout pomocí nastavení v souboru .htaccess).
Ve frameworku je pro provázání komponent použit návrhový vzor Inversion of
Control. Pokud se vám některá třída frameworku nelíbí je velmi
snadné si naimplementovat svoje řešení. Mluvím například
o Routeru
, View
atd. Sám používám jako view
vrstvu, místo defaultních PHP stránek, Smarty
template.
Vývojové nástroje
Pro PHP i Javu, ve které také programuji, používám Elipse. Open source IDE, které není třeba představovat. Díky pluginu pro PHP a Subversion lze mít v tomto jednom nástroji skutečně vše co je pro vývoj rozsáhlých PHP aplikací potřeba.
Části Zend Frameworku
V následujících odstavcích popíšu segmenty Zend Frameworku verze 0.7. Je však mnoho segmentů, které se nachází v inkubátoru (ve vývoji, které zatím nejsou součástí frameworku). Nejaktuálnější verzi frameworku lze stráhnou včetně inkubátoru ze svn http://framework.zend.com/…mework/trunk.
Segmenty Zend Frameworku
- Zend
- Základní třída frameworku. Obsahuje převážně statické helper metody, které jsou používání v ostatních částech frameworku.
- Zend_Acl
- Poskytuje ACL funkcionalitu – umožňuje nastavovat práva pro přístup k objektům.
- Zend_Cache
- Část, která obsahuje třídy umožňující kešování. Objektem kešování může být celá stránka, text, výsledek funkce, třída. Má bohaté možnosti nastavení.
- Zend_Config
- Kromě nastavení v asocivních polích v samotné PHP kódu lze framework konfigurovat i pomoci XML nabo INI souborů. V konfiguračních souborech lze například dědit z předchozích konfiguračních oddílů.
- Zend_Controller
- Obsahuje třídy umožňující vytvářet aplikace založené na MVC
patternu. Součástí jsou také třídy, které jsou nadstavbou low level
API – mám na myslí například třídu
Zend_Controller_Request_Http
neboZend_Controller_Response_Http
. Tuto část frameworku považuji za nejužitečnější. - Zend_Date
- Obsahuje knihovny pro práci s datem a časem.
- Zend_Db
- Obsahuje knihovny pro práci s persistentními daty. Pro přístup
k databázi je použita vrstva PDO.
Jedním z nejdůležitějších tříd je
Zend_Db_Table
, která staví na principu, že jedna tabulka v databázi je přímo doménový objekt. - Zend_Feed
- Knihovny pro zpracovávání RSS a Atom kanálů. Bohužel zde není podpora pro jejich vytváření.
- Zend_Filter, Zend_Filter_Input
- Obsahuje statické metody pro práci s daty. Například kontrola
validního e-mailu, čísla atd.
Zend_Filter_Input
pracuje přímo s daty z požadavku (GET, POST, SESSION, COOKIE). - Zend_Gdata
- Obsahuje třídy pro práci s online službami Google. Jsou to například
Google Base
pro přístup k k vyhledávání zaměstnání, výrobků, událostí atd. DáleGoogle Blogger
,Google Calendar
aGoogle CodeSearch
. - Zend_Http
- Obsahuje třídy umožňující vytvářet a zpracovávat HTTP požadavky.
- Zend_Json
- Obsahem tohoto segmentu jsou třídy umožňující serializaci PHP do JSON objektů a naopak. JSON může být použit například pro komunikaci mezi PHP a javascriptem, ve které jsou vytvořeny knihovny stejného typu.
- Zend_Locale
- Tento segment bych se stará o výstup, který je závislý na národním prostředí (ormátování data, času, peněz).
- Zend_Log
- Jak napovídá název stará se tento segment o logování. Můžeme používat různé úrovně logování. Najednou je možné logovat do několika logů. Logovat lze do konzole (obrazovka), souboru a databáze.
- Zend_Mail
- Segment usnadňující posílání e-mailů jak textových tak
s přílohou. Pro posílání e-mailů lze použít vestavěnou funkci
mail
nebo posílat přímo přes SMTP server. - Zend_Measure
- Segment sloužící k převádění jednotek z oblasti fyziky, matematiky atd.
- Zend_Mime
- Tento segment je používám v již zmíněném segmentu
Zend_Mail
. Obsahuje třídy pro práci s MIME zprávami. - Zend_Pdf
- Pomocí
Zend_Pdf
lze vytvářet PDF dokumenty. Lze kreslit geometrické útvary, používat barvy a samozřejmě vkládat text. - Zend_Search
- Velmi zajímavý segment obsahující třídy pro vyhledávání. Je založeny na oblíbeném Lucene search, který se používá v Javě.
- Zend_Server_Reflection
- Tento segment obsahuje třídy usdňující provádění reflexe. Staví na reflexi PHP 5.
- Zend_Service_Amazon
- Obsahuje třídy zjednodušující práci s webovými službami serveru Amazon.
- Zend_Service_Flickr
- Obsahuje třídy zjednodušující práci s webovými službami serveru Flickr.
- Zend_Service_Rest
- Obsahem tohoto segmentu jsou třídy tvořící REST klienta pro vykonávání dotazů REST webovými službami.
- Zend_Service_Yahoo
- Obsahuje třídy zjednodušující práci s "webovými službami serveru Yahoo.
- Zend_Session
- Tento segment obsahuje třídy, kterou jsou nadstavbou nad globálním polem
$_SESSION
. - Zend_Uri
- Tento segment je hojně využíván v již zmíněném
Zend_Controller
. Slouží pro validaci a práci s URI. - Zend_View
- Segment
Zend_View
obsahuje třídy, které slouží pro zobrazení výstupu. Dá se říci, že to je právě to V ze zkratky MVC. - Zend_XmlRpc
- Obsahuje třídy umožňující vytvářet RPC dotazy.
Zajímavé segmenty z inkubatoru
V inkubátoru se nacházejí části ZF, které jsou ve vývoji a s největší pravděpodobností se dostanou do jedné z přístích verzí. Zmínil bych ty nejzajímavější.
- Zend_Auth
- Tento segment slouží pro autentikaci (ověření totožnosti uživatele), přihlašování a odhlašování uživatele.
- ZForm
- Jak napovídá název slouží tento segment pro práci s formuláři.
Formuláře umí generovat i validovat (na straně serveru i klienta).
Obsahuje třídu pro každý běžný formulářový prvek (např.
ZFormButton
,ZFormInputElement
,ZFormImage
,ZFormOption
,ZFormRadioButton
,ZFormCheckbox
). - Zend_Soap
- Segment obsahuje třídy pro práci se SOAP.
Zdroje o Zend Frameworku
Odebírám e-mailovou konferenci (seznam všech e-mailových konferencí, které ZF nabízí a denně je zde mezi 50 a 100 novými příspěvky. Samozřejmě nabízí i RSS kanály.
Důležité odkazy
Závěrem
ZF rozhodně stojí za vyzkoušení. I fakt, že vývoj frameworku zaštiťuje firma Zend (tvůrce PHP) zaručuje, že se jedná o trvanlivé řešení. Kolem ZF je komunita, která je hodně aktivní. Framework jasně ukazuje, že i v PHP jsou tvořit kvalitní aplikace. Celý framework je napsaný čistým kódem s bohatými komentáři, který dodržuje best practises.
V příštím článku se bude jmenovat Zend Framework – Hello
World. Předvedu v něm základní použití části
Zend_Controller
a routerů
Zend_Controller_Router
a
Zend_Controller_RewriteRouter
.
Článek patří do kategorie: PHP, Zend Framework
1 Komentář Přidat komentář
1. 3arrears&hellip | 13. January 2022 v 0.54
1replace…
…
Přidat komentář
Povolené HTML značky:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>
Odkazovat na tento článek | Přihlásit se k odběru těchto komentářů přes RSS Feed