Mendelova zemědělská a lesnická univerzita v Brně Provozně ekonomická fakulta Moderní přístupy ve vývoji PHP webových aplikací Diplomová práce Vedoucí práce: Bc. Jan Pagáč Ing. Oldřich Trenz, Ph.D. Brno 2010 Rád bych na tomto místě poděkoval vedoucímu práce Ing. Oldřichu Trenzovi, Ph.D. za cenné rady a připomínky, kterými napomohl k vypracování této diplomové práce. Prohlašuji, že jsem tuto diplomovou práci sepsal samostatně s užitím zdrojů, které uvádím v seznamu na konci práce. V Brně dne 15. května 2010 .................................................... 4 Abstract Pagáč J., Modern approaches in PHP web applications development. A thesis. Brno 2010. The thesis is focused on modern approaches in PHP web applications develop- ment. A theoretical part is concerned about theory explaining basic terms, analysing current modern approaches and tools. Afterwards tools are analyzed more detailed. A practical part is concerned about use a choosen modern tool in real life. Keywords: PHP, framework, integrated development environment Abstrakt Pagáč J., Moderní přístupy ve vývoji PHP webových aplikací. Diplomová práce. Brno 2010. Diplomová práce se zabývá analýzou moderních nástrojů pro vývoj PHP webo- vých aplikací. V teoretické části se práce zabývá teorií, která vysvětluje základní pojmy, analyzuje současné moderní přístupy a nástroje. Poté jsou vybrané nástroje analyzovány. Praktická část se věnuje reálnému použítí zvoleného nástroje v praxi. Klíčová slova: PHP, framework, vývojové prostředí OBSAH 5 Obsah 1 Úvod a cíl práce 7 1.1 Úvod do problematiky . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.2 Cíl práce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2 Teoretická východiska práce 9 2.1 Shrnutí použitých technologií . . . . . . . . . . . . . . . . . . . . . . 9 2.1.1 Jazyk PHP . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.1.2 Webové aplikace . . . . . . . . . . . . . . . . . . . . . . . . . 10 2.1.3 Databáze . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 2.1.4 Framework . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 2.1.5 Vývojové prostředí . . . . . . . . . . . . . . . . . . . . . . . . 11 2.2 PHP frameworky . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 2.2.1 Architektura MVC . . . . . . . . . . . . . . . . . . . . . . . . 13 3 Metodická východiska práce 15 3.1 Současné trendy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 3.2 Uživatel nástroje a preference firem . . . . . . . . . . . . . . . . . . . 17 3.3 PHP frameworky . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 3.3.1 Kritéria efektivnosti . . . . . . . . . . . . . . . . . . . . . . . 19 3.4 Vývojová prostředí . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 3.4.1 Kritéria efektivnosti . . . . . . . . . . . . . . . . . . . . . . . 23 4 Vlastní řešení 27 4.1 PHP frameworky . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 4.1.1 Přehled PHP frameworků . . . . . . . . . . . . . . . . . . . . 27 4.1.2 Srovnání frameworků . . . . . . . . . . . . . . . . . . . . . . . 30 4.2 Vývojová prostředí . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 4.2.1 Zend Studio . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 4.2.2 phpDesigner . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 4.2.3 PHPeclipse a Eclipse PDT . . . . . . . . . . . . . . . . . . . . 37 4.2.4 Netbeans . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 4.2.5 Adobe Dreamweaver . . . . . . . . . . . . . . . . . . . . . . . 39 4.3 Návrhy vhodného použití . . . . . . . . . . . . . . . . . . . . . . . . . 40 4.3.1 Společnost s vývojovým týmem . . . . . . . . . . . . . . . . . 40 4.3.2 Začátečník . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 4.3.3 Zkušený jednotlivec . . . . . . . . . . . . . . . . . . . . . . . . 44 4.4 Použití v praxi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 4.4.1 Vytvoření nového MVC projektu . . . . . . . . . . . . . . . . 46 4.4.2 Tvorba částí aplikace a modulů . . . . . . . . . . . . . . . . . 47 4.4.3 Formuláře . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 4.4.4 Action helpers . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 4.4.5 View helpers . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 OBSAH 6 4.4.6 Lokalizace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 4.4.7 Mapování databáze . . . . . . . . . . . . . . . . . . . . . . . . 53 4.4.8 Autentizace a autorizace . . . . . . . . . . . . . . . . . . . . . 54 4.4.9 Navigace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 4.4.10 Sessions a cache . . . . . . . . . . . . . . . . . . . . . . . . . . 58 4.4.11 Routování . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 4.4.12 Bezpečnost . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 4.4.13 Webové služby . . . . . . . . . . . . . . . . . . . . . . . . . . 61 4.4.14 Google API . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 4.4.15 Zabudované javascriptové frameworky . . . . . . . . . . . . . 63 5 Diskuze 65 6 Závěr 67 7 Literatura 68 Přílohy 70 A Ukázka použití komponent pro prezentační vrstvu 71 B Ukázka použití komponent pro exporty 74 1 ÚVOD A CíL PRÁCE 7 1 Úvod a cíl práce 1.1 Úvod do problematiky Každá společnost zabývající se vývojem software a maximalizující svůj zisk by měla neustále hledat a zkoušet moderní nástroje pro vývoj vlastních produktů. Zavede- nímefektivnějšíchnástrojůmůžespolečnostzvýšitproduktivituprácesvýchzaměst- nanců, minimalizovat náklady na vývoj a tím si zajistit vyšší zisk. Nedávná celo- světová hospodářská krize dokázala mnohým firmám, že otázku efektivnosti práce je potřeba řešit neustále. V době krize společnosti zabývající se vývojem software velmi pravděpodobně diskutovaly o problematice dalšího zefektivnění vývoje více než kdy jindy. Pro malé firmy mohla být včasná změna metodiky práce a rychlé použití moderních nástrojů pro vývoj software správnou cestou k udržení konkurenceschopnosti. Je pravděpodobné, že společnosti, které se pohybují pouze na trhu vývoje soft- ware a jejichž zisky plynou zejména z tohoto segmentu, otázku efektivnosti vývoje musí řešit. Takové firmy využívají nejrůznější moderní metody, techniky a konvence vývoje software. Mají propracované postupy pro zaškolení nových zaměstnanců, jejich následný růst či komunikaci s kolegy a vedením. Vedle těchto silných hráčů existuje celá řada menších firem, pro které je vývoj software minoritní podnikatelská činnost. Může se jednat například o reklamní či produkční agenturu vyvíjející pro své zákazníky nástroje pro elektronické podnikání nebo správu webových prezentací. Může se stejně tak jednat o živnostníka, který spolupracuje s externími programá- tory a komunikující s nimi „na dálku(cid:255). Může se ale jednat i o firmu zaměstnávající jednoho jediného programátora. Jejich zisky závisí na jiném trhu. Není nijak neob- vyklé, že tyto společnosti řídí lidé, kteří nemají potřebné vzdělání či znalosti v této problematice. Díky tomu všemu nepřikládají velký důraz na používané technologie, metody či konvence. V České republice funguje těchto firem celá řada. Zabývají se realizací jednodu- chých firemních webových prezentací, implementací různých řešení pro e-business, portálů, ale i složitých webový aplikací na míru. U takovýchto společností se dá předpokládat vysoká fluktuace zaměstnanců. Je pravděpodobné, že jakýkoliv ná- růst poptávky po produktech firem bude vedení řešit najímáním dalších pracovních sil a problémy budou řešeny propouštěním zaměstnanců. Vedoucí pracovníci firem totiž nemusejí disponovat relevantními informacemi o možnostech, které při vývoji mají. Například z důvodu pracovního vytížení, neodbornosti v dané problematice či obav ze změn. Otázka efektivnosti je patrná i ze situace, kdy společnost zaměstnává jednoho vývojáře, který ve firmě vyvíjí software na základě svých zkušeností, preferencí a po- mocí oblíbených nástrojů. Po nějakém čase zaměstnanec opustí pracovní pozici a na jeho místo příjde nový programátor s odlišnými zkušenostmi a preferencemi. Firma musí vynaložit nemalé náklady na „zaběhnutí(cid:255) nového pracovníka, který ovšem za- 1.2 Cíl práce 8 vede opět nové techniky, použije jiné nástroje. V některých případech se může stát, že díky tomu všemu se programátor stane pro firmu těžko postradatelným. Otázkou je, zda lze použít nějaký nástroj, který by eliminoval některé výše zmíněnéproblémy.Takovénástrojeexistujíamůžejímbýttřebakvalitníframework, nad kterým budou programátoři stavět aplikace. Správně zvolené vývojové prostředí také determinuje produktivitu programátora. 1.2 Cíl práce Cílem práce je analyzovat a popsat moderní nástroje pro efektivní vývoj PHP webo- vých aplikací. Je podrobně rozebráno použití PHP frameworků, které jsou za určitých podmí- nek jednou skupinou velmi efektivních nástrojů pro vývoj PHP webových aplikací. V práci budou popsány a shodnoceny nejznámější PHP frameworky. Reálné použítí v praxi bude demonstrováno na vybraném frameworku. Vývojová prostředí jsou ro- zebrána jako další samostatná skupina nástrojů. Práce popisuje výhody a možnosti použití moderních vývojových prostředí pro PHP spolu s náklady na jejich pořízení. V práci se zhodnocují popsané možnosti jednotlivých skupin nástrojů. Jsou jasně definovány nejvhodnější nástroje pro efektivní vývoj PHP webových aplikací ve vybraných situacích a na základě definovaných požadavků společností. Vybrané problematiky jsou průběžně demonstrovány a řešeny na praktických ukázkách. Jsou popsány rozdíly, vyzdvihnuty výhody a diskutovány nevýhody daného použití. Tato diplomová práce by měla pomoci jedincům a malým společnostem, které se zabývají vývojem software za použití jazyka PHP a doposud neuvažovali nad otázkou snižování nákladů pomocí maximalizace efektivnosti a produktivity práce vlastních zaměstnanců nebo sebe sama. Otázka volby správné metodiky vývoje software je důležitou, ale o to obtížnější záležitostí. V této diplomové práci bude metodika vývoje zmiňována pouze v sou- vislosti s vybranými nástroji, které metodiku podporují. Jinak nebude uvažována. 2 TEORETICKÁ VÝCHODISKA PRÁCE 9 2 Teoretická východiska práce 2.1 Shrnutí použitých technologií 2.1.1 Jazyk PHP PHP (Gutmans, Bakken, Rethans, 2007), (PHP Group, 2009) je skriptovací jazyk pro tvorbu dynamického webu. Jeho počátky spadají do roku 1994. V polovině roku 1995 se systém PHP spojil s jiným programem stejného autora, nástrojem Form Interpreter neboli zkráceně FI. Tak vzniklo PHP/FI 2.0, systém, který si postupně získal celosvětovou proslulost. Koncem roku 1998 byla k dispozici verze PHP 3.0, která byla mnohem rych- lejší a vybavenější než PHP 2.0 a která byla k dispozici rovněž pod operačními systémy Windows. Zvyšoval se počet webů, které používaly PHP. Až dosáhl cca 150 000. Čtvrtá verze PHP přidala do jazyka mnoho nových funkcí a rovněž přinesla přepracované a podstatně rychlejší jádro Zend (Gilmore, 2005). Podle údajů z dubna 2004 je PHP použito na více než 15 000 000 doménách a je to bezkonkurenčně nejčastěji používaný modul webového serveru Apache. S přícho- dem verze PHP 5 bylo upraveno jádro, kompletně přepsána podpora XML, přibylo nové objektové rozhraní pro práci s databází MySQL. PHP je stále vybavováno novými technologiemi a je aktivně vyvíjeno. V České republice je zatím pozice PHP mezi dynamickými jazyky velmi silná, přestože se začínají stále více prosazovat i jazyky jako Python. To je dáno jednak skutečností, že za Pythonem plně stojí silný Google a v České republice jej využívají velké firmy jako Seznam a.s. nebo Centrum Holdings, a také tím, že komerční posky- tovatelé webhostingů začínají postupně uspokojovat rostoucí poptávku po hostingu projektů v Pythonu. PHP je nyní ve svých „nejlepších letech(cid:255). Jazyk je s úspěchem použit v řadě celosvětově známých a úspěšných projektů jako Facebook či Youtube. Nemělo by však usínat na vavřínech. Ruby 1.9 s plnou podporou unicode se připravuje a také mod rails pro Apache je ve vývoji. Python 3k je na tom podobně. Modul mod wsgi zajistil vyřešení problému s hostováním python projektů na Apache serverech bez nutnosti server neustále restartovat. Aktuální release master PHP 5.3 na svém blogu (Schlüter, 2010) oznámil po- měrně zásadní změnu v plánu vývoje PHP 6. Rozhodnutí přepsat PHP tak, aby vnitřně používalo UTF-16, se ukázalo jako nevhodné. Bude se pokračovat jiným směrem. O konkrétním postupu se bude ještě debatovat. Cílem bude zrychlit a zjed- nodušit proces zavádění unicode do PHP. PHP 6 tak bude z trunku svn repozitářů PHP přesunuto do samostatné, v podstatě mrtvé, větve. PHP 6 (Boronczyk, 2009) slibovalo kromě zásadního zavedení unicode také redukci některých konfiguračních direktiv, které hlavně u začínajících programá- torů způsobovaly více zmatku než užitku (register globals, magic quotes gpc, ma- gic quotes runtime, safe mode). V PHP 6 měl vzniknout nový datový typ int64. PHP 6 mělo podporovat kontroverzní příkaz skoku goto (omezeně). Je možné, že 2.1 Shrnutí použitých technologií 10 se většina očekávaných úprav přesune do dalších verzí PHP 5.3.x. Aktuální stabilní verze PHP 5.3.2 je volně ke stažení z oficiálních stránek (PHP Group, 2009). 2.1.2 Webové aplikace V dřívějších typech aplikací typu klient-server měla každá aplikace svůj vlastní kli- entský program, který sloužil jako její uživatelské rozhraní a musel být instalován na osobním počítači každého uživatele. Aktualizace serverové části typicky vyžadovala i aktualizaci klientských programů na každé pracovní stanici, což zvyšovalo náklady na podporu a snižovalo efektivnost zaměstnanců. Webová aplikace je v softwarovém inženýrství chápána jako aplikace poskyto- vaná uživatelům z webového serveru přes počítačovou síť Internet, nebo její vni- tropodnikovou obdobu (intranet). Webové aplikace jsou populární především pro „všudypřítomnost(cid:255) webového prohlížeče jako klienta. Ten se pak nazývá tenkým klientem, protože sám o sobě logiku aplikace nezná. Hlavním důvodem oblíbenosti webových aplikací je schopnost aktualizovat a spravovat webové aplikace bez nutnosti šířit a instalovat software na potenci- álně tisíce uživatelských počítačů. Webové aplikace jsou používány pro implemen- taci podnikových i jiných informačních systémů, elektronického podnikání, aukčních systémů, diskusních fór či blogů. 2.1.3 Databáze Pojem databáze je v souvislosti s vývojem webových aplikací spjat s nutností ucho- vávat konzistentní data generovaná nebo zpracovávaná aplikací na určitém místě (databázový stroj), kam poté aplikace může rychle přistupovat, dotazovat se a data zpracovávat. Vzhledem k tomu, že je kladen velký důraz na rychlost vyhledávání v uložených datech, byla vyvinuta celá řada komerčních i open source řešení lišících se vlastní logikou práce s daty a mnohými dalšími atributy. Mezi nejznámější a nejpoužívanější databáze v souvislosti s PHP patří MySQL a databáze společnosti Oracle. MySQL je databázový systém, vytvořený švédskou firmou MySQL AB. MySQL je považován za úspěšného průkopníka dvojího licencování. Je k dispozici jak pod bezplatnou licencí GPL, tak pod komerční placenou licencí. MySQL je multiplat- formní databáze. Komunikace s ní probíhá, jak už název napovídá, pomocí jazyka SQL. Podobně jako u ostatních SQL databází se jedná o dialekt tohoto jazyka s ně- kterými rozšířeními. Pro svou snadnou implementovatelnost (lze jej instalovat na Linux, MS Windows, ale i další operační systémy), výkon a především díky tomu, žesejednáovolněšiřitelnýsoftware,mávysokýpodílmezipoužívanýmidatabázemi v současnosti. Velmi oblíbená a často používaná je „trojkombinace(cid:255) MySQL, PHP a Apache jako základní software webového serveru (LAMP, XAMP). MySQL bylo od počátku optimalizováno především na rychlost a to i za cenu některých zjednodušení. MySQL má jen jednoduché způsoby zálohování a až done-
Description: