Zend Framework
Zend Framework je open source, objektově orientovaný, webový aplikační framework implementovaný v PHP 5 a licencovaný pod New BSD license. Zend Framework (často označovaný jako ZF) je vyvíjen s ohledem na jednoduchý vývoj webových aplikací. Užívá modulární architektury která umožňuje vývojářům použít jen ty komponenty, které potřebují. Částečné závislosti mezi komponentami však existují. ZF v sobě zahrnuje komponenty pro MVC aplikace, autorizaci a autentizaci, implementuje různé druhy cache, filtrů a validátorů pro uživatelská data, jazykové komponenty a mnoho dalších. Začal být vyvíjen na počátku roku 2005, kdy mnoho nových frameworků, jako Ruby on Rails a Spring Framework získávalo na popularitě. Oficiálně byl oznámen na první Zend Conference. Šéf vývojářem je Matthew Weier O'Phinney.
Vývojář | Zend Technologies |
---|---|
Aktuální verze | 3.0.0 (28. června 2016) |
Operační systém | Multiplatformní |
Vyvíjeno v | PHP |
Typ softwaru | Webový aplikační framework |
Licence | New BSD |
Lokalizace | Anglicky |
Web | framework.zend.com |
Některá data mohou pocházet z datové položky. |
Požadavky
Zend Framework od verze 1.7.0 vyžaduje minimálně PHP 5.2.4. Předchozí verze si vystačily s PHP 5.1.4 nebo novějšími. V produkčním prostředí však vývojáři důrazně doporučují používat PHP 5.2.3 nebo novější z důvodu většího zabezpečení a výkonu. Ke spuštění unit testů je vyžadována knihovna PHPUnit minimálně verze 3.0. Mnoho komponent také vyžaduje některá z modulových rozšíření PHP.
Vlastnosti
- Všechny komponenty jsou plně objektově orientované a vyhovují direktivě E_STRICT
- Modulární architektura typu užij-co-potřebuješ minimalizuje křížové závislosti mezi komponentami
- Rozšiřitelná implementace MVC s podporou layoutů a šablonovacím systémem
- Podpora pro multi-databázové systémy zahrnuje MySQL, Oracle, IBM DB2 MSSQL Server, PostgreSQL, SQLite a Informix Dynamix Server
- Kompozice e-mailu a schopnost jej odeslat/přijmout skrze mbox, Maildir, POP3 nebo IMAP4
- Flexibilní cache subsystémy s podporou mnoha typů backendů jako paměť nebo soubor
Komponenty
Stručný výčet nejznámějších komponent frameworku:
- Zend_Acl – Jednoduchý a flexibilní systém pro správu uživatelských oprávnění
- Zend_Application – Knihovna pro načtení a správu základních prvků aplikace (bootstraping)
- Zend_Auth – Autentifikace uživatelů s mnoha druhy úložišť
- Zend_Cache – Implementace cache systému s úložišti ve formě paměti, souboru, APC, SQLite atd.
- Zend_Config – Slouží k nastavení aplikace skrze konfigurační soubory
- Zend_Controller – Implementace Model-View-Controller (MVC) architektury
- Zend_Date – Komponenta pro práci s daty
- Zend_Db – Implementace multi-databázové vrstvy
- Zend_Dojo – Knihovna pro práci s javascriptovým frameworkem Dojo
- Zend_Filter – Komponenta pro filtrování uživatelských dat s velkým množstvím filtrů
- Zend_Form – Objektový vývoj webových formulářů včetně filtrování hodnot a jejich validace
- Zend_Layout – Správa layoutů aplikace
- Zend_Log – Komponenta pro logování určitých dat s množstvím backendů
- Zend_Mail – Tvorba e-mailů, správa e-mailových schránek
- Zend_Memory – Podpora pro zpracování dat s omezeným množstvím dostupné paměti
- Zend_OpenID – Implementace OpenID klienta i serveru
- Zend_Paginator – Komponenta pro práci se stránkováním dat
- Zend_Pdf – Objektový přístup a vytváření PDF souborů
- Zend_Registry – Komponenta pro uchovávání objektů a hodnot v aplikační vrstvě
- Zend_Translate – Podpora pro překlady a různé jazykové mutace aplikací
- Zend_View – Šablonovací systém
- ZendX_Jquery – Podpora javascriptoveho frameworku jQuery
Helpery
Helper je pomocná funkce, ulehčující programátorům práci. Často používaný kód či specifická funkčnost lze uložit do helperu a ten následně používat. Helpery v Zend Frameworku dělíme na action helpery a view helpery. První jsou používány v controllerech, druhé ve view. Zend Framework obsahuje některé předdefinované helpery.
Action helpery
ActionStack helper umožňuje vkládat požadavky na další zpracování action pomocí front controller pluginu Actionstack.
Autocomplete usnadňuje práci s automatickým doplňováním formulářů ContextSwitch a jeho specializovaná verze AjaxContext nastavuje odpověď vhodnou pro použití jiného formátu.
FlashMessenger uchovává text napříč aplikací. Umožňuje tak uchovávat výstup, který chceme použít při dalším načtení stránky. Nevýhodou FlashMessengeru je, že není schopen pojmenovávat prostor, proto je nutno k ukládanému textu přidávat další informace o něm (např. info|toto je info text). Nejlépe například nějakým znakem oddělit a následně pracovat s částmi řetězce.
View Renderer helper zajišťuje, že se po skončení action vykreslí příslušný view, bez dalšího nastavování. Toto chování lze samozřejmě změnit. Programátor tedy vytvoří v controlleru metodu action a k ní dle přijatých jmenných konvencí soubor view. O vlastní správné propojení se pak už postará framework.
View helpery
Action View Helper je schopen načíst konkrétní action z controlleru a vložit výsledek do view.
Partial Helper slouží k znovupoužití často opakovaných prvků ve view. Tento prvek je uložen ve vlastním souboru a do view vkládán pomocí tohoto helperu. Poskytován je také PartialLoop, který je načítán opakovaně.
Placeholder Helper je vhodný pro skládání obsahu stránek. Ukládá pojmenovaná data, ke kterým pak lze přistupovat v libovolném view. Skupina helperů Doctype, HeadLink, HeadMeta, HeadScript, HeadStyle, HeadTitle a InlineScript jsou pak konkrétními implementacemi Placeholder helperu.
HTML Object vkládá do view html prvky v tagu <object>. Vhodné například pro vkládání flash animací.
JSON Helper nastavuje správnou hlavičku odpovědi a vypíná použití layoutu.
Translate Helper pomáhá při práci s vícejazyčnou aplikací. Využívá knihovnu Zend_Translate.
Jmenné konvence
Všechny soubory frameworku jsou uloženy ve dvou adresářích. Hlavní a původní adresář je Zend a druhý, sloužící pro ukládání dalších dílčích knihoven (Extras), je ZendX. PHP od verze 5.3 sice podporuje jmenné prostory (namespaces), z důvodu zpětné kompatibility zůstává ale Zend Framework ve verzi 1 bez jejich podpory. Jeho následující verze (2.0) by již měla mít plnou podporu jmenných prostorů.
Třídy se pojmenovávají podle adresářové struktury, ve které se nachází, tj. třída v souboru Zend/Foo/Bar/Baz.php se bude jmenovat Zend_Foo_Bar_Baz. Všechny abstraktní třídy mají podle Zend Coding Standard mít název _Abstract (a tedy být v souboru abstract.php), veškerá rozhraní (interface) mají mít název _Interface (být v souboru interface.php).
Prefixem Zend_ mohou být podle licenčních podmínek označovány pouze třídy ze samotné distribuce Zend Frameworku.
Názvy všech chráněných (protected) a soukromých (private) metod a vlastností tříd musí začínat podtržítkem. Pro názvy všech metod a proměnných se používá cammelCase, konstanty jsou naproti tomu psané VELKÝMI_PÍSMENY.
Návody
- český překlad anglického návodu
Externí odkazy
- Obrázky, zvuky či videa k tématu Zend Framework na Wikimedia Commons
- Pokračování Zend Frameworku jménem Laminas
- Zend Framework příklady (ZfEx)
- České fórum