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.
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
Zpracování požadavku prohlížeče dle probíhajících procesů|náhled
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.
Reference
Návody český překlad anglického návodu
Externí odkazy
Pokračování Zend Frameworku jménem Laminas Zend Framework příklady (ZfEx)
České fórum
Kategorie:Webové aplikační frameworky Kategorie:Software v PHP Kategorie:Svobodný software Kategorie:Software pod licencí BSD