PHP Best Practices Please try to fit your code to 80 columns. That's decimal 80. A. Morton
Koncepce větších aplikací Front Controller Design Pattern Celý web má jeden přístupový bod, přes který se posílají všechny požadavky z klienta (např. index.php). Přístupový skript se nazývá bootstrap. Bootstrap zjistí typ požadavku, provede jeho routing a dispatching. Routing vyhledání vhodné stránky, třídy, nebo jiné entity, která umí požadavek obsloužit. Routing se provádí z parametrů zaslaných z klienta. Dispatching zavolání požadované metody na získané entitě. Požadavek na zobrazení (GET) Akce k provedení (POST) Výhody použití: Bezpečnější Méně náchylné k chybám programátora verze 1.1 2008-2009, Martin Kruliš 2
Zobrazování stránek. Model-View-Control Návrhový vzor, který se používá pro správu jednotlivých stránek. View (pohled) Entita, která se stará o sestavení stránky. Čte data z modelu a prezentuje je do HTML. Model Zdroj dat (např. z databáze) Poskytuje jednoduchý interface šitý na míru dané stránce. Controller Řídí činnost modelu a pohledu Obsluhuje požadavky verze 1.1 2008-2009, Martin Kruliš 3
Šablony Snaha maximální separace HTML (CSS, JS, ) od PHP Vhodné zejména u velkých webů Snazší správa, lepší dělba práce, PHP kód pouze vykonává příkazy HTML je generováno pomocí šablon Šablony V PHP (prokládané HTML) Šablona obsahuje PHP pouze pro vkládání dat (podmínky, iterace, ) Vkládají se pomocí include()/require() Šablony v textových souborech Šablona je HTML soubor se speciálními značkami. {{značka}}, <%značka%> apod. PHP soubor přečte a pomocí funkcí pro práci s řetězci nahradí značky za platné hodnoty. verze 1.1 2008-2009, Martin Kruliš 4
Databáze Ručně psané SQL dotazy nejsou příliš pohodlné. Špatně se řeší cachování, skládání dotazů, opakování kódu, problémy při změně struktury DB, Table Data Gateway Design Pattern Jeden objekt (třída) zapouzdřuje přístup k jedné tabulce. Objekt zná položky tabulky a jejich datové typy. Row Data Gateway Design Pattern Jeden objekt (třída) zapouzdřuje přístup k jednomu řádku z tabulky. Spolupracuje s table data gateway. Vazby mezi tabulkami jsou uložené v gateways. Automatické generovaní JOIN dotazů. verze 1.1 2008-2009, Martin Kruliš 5
PHP a roboti (crawlers) Roboti prohledávají celý web (i vaše stránky). Pozor: stránky získané metodou GET by neměly dělat side-efekty. Cokoli jste na stránky umístili vidí celý svět. Pozor, aby se crawler nedostal na citlivý obsah. Chování "hodných" robotů se dá nastavit souborem robots.txt v kořenovém adresáři. Viz http://www.robotstxt.org/ SEO Search Engine Optimalization URL má velkou prioritu důležitý text by měl být v odkazech. Používejte meta tagy description, keywords Piště kvalitní obsah, používejte korektně tagy (<h1>, <em> ). verze 1.1 2008-2009, Martin Kruliš 6
Zend Framework
Frameworks Framework je sada knihovních skriptů, které mají usnadnit vývoj aplikací (v našem případě webových). V PHP mají různé vestavěné knihovny často různá rozhraní. Způsobeno postupným vývojem a zpětnou kompatibilitou. Frameworky se snaží nabídnout jednotné API. Většina frameworků je objektových. Framework přidává další funkcionalitu. Lepší přenositelnost (mezi servery, databázemi ) Implementace webových návrhových vzorů Předpřipravené komponenty, které se často používají verze 1.1 2008-2009, Martin Kruliš 8
Zend framework slovo úvodem Společnost Zend Společnost založil Zeev Suraski a Andi Gutmans. Od verze PHP4 je zodpovědná za vývoj jádra PHP. Zend Framework Open source framework, jehož vývoj byl iniciován firmou Zend. Dnes spolupracují také Adobe, Google, Mirosoft a další. Publikován pod New BSD License. V současné době byla uvolněna verze 1.7.8. Během předloňské přednášky byla k dispozici teprve 0.9 beta. Spolupráce s ním je integrována do Zend Studia. Viz http://zendframework.com/ verze 1.1 2008-2009, Martin Kruliš 9
Zend framework - základy Front Controller a Model-View-Control Zend framework je založen na těchto návrhových vzorech. Routovací informace bere z URL (ve vlastním formátu). Automaticky vyhledává soubory (kontroléry a šablony). Viz třída Zend_Controller Šablony Používá šablony s prokládaným PHP. Součástí Model-View-Control vzoru viz třída Zend_View. Databáze Objektový adaptér zapouzdřující připojení k databázi. Zapouzdření dotazů Zend_Db_Select. Nabízí i Table Data Gateway a Row Data Gateway. verze 1.1 2008-2009, Martin Kruliš 10
Zend framework další funkce Zběžný přehled výběru tříd Zend_Acl access control list pro autorizaci uživatelů Zend_Auth autentizace uživatelů Zend_Cache vyrovnávací paměť Zend_Config načítání konfiguračních souborů Zend_Feed práce s RSS Zend_Json generování Json objektů od JavaScriptu (pro AJAX) Zend_Log logování všeho druhu Zend_Mail odesílání pošty a sestavování mailů Zend_Search_Lucene obecný vyhledávací engine Zend_Service webové služby Zend_Session Zend_Translate překládání, správa jazykových verzí verze 1.1 2008-2009, Martin Kruliš 11
Zend framework - shrnutí Výhody: Jednotné rozhraní Usnadňuje práci Podpora (vývojové nástroje, komunita ) Open source Nevýhody: Místy až příliš robustní Je třeba vytvářet mnoho objektů, aby se zobrazila jednoduchá stránka. Občas poměrně striktní Chcete-li speciální funkcionalitu, musíte si ji stejně napsat sami. Integrovat vaše funkce do již hotových řešení dá občas práci. verze 1.1 2008-2009, Martin Kruliš 12