Přehled a vývoj PHP frameworků

Václav Stoupa 28. 3. 2008

Co jsou to PHP frameworky? K čemu slouží a jak je můžete využít? Které frameworky jsou nejpoužívanější? Jak si u nás PHP vede a jaká je jeho budoucnost? V článku se podíváme na minulost, současnost i budoucnost populárních PHP frameworků. V dubnu se na toto téma v Pardubicích uskuteční velká konference.

Root.cz je hlavním mediálním partnerem nadcházející dubnové konference o PHP frameworcích. Protože se tedy jedná o poměrně aktuální téma, rozhodli jsme se o něm napsat víc. Začneme historií, pak lehce porovnáme nejznámější frameworky a v závěru se podíváme na to, kam by se měl vývoj PHP dále ubírat.

PHP knihovny v minulosti

Už v dobách největší slávy PHP 4 před několika lety začaly vznikat první knihovny se zobecněnými funkcemi a třídami. Ať už to byl doposud fungující repositář na adrese www.phpclasses­.org, nebo balíčkovací systém PEAR, ze kterého se hodně používala databázová knihovna PEARDB. U databází bychom měli zmínit také ADOdb. Velkou popularitu měly nejrůznější šablonovací systémy a vedly se vášnivé spory, který z nich je lepší a jestli nakonec nestačí jako šablonovací systém samotné PHP. Nejznámější templatovací systém – Smarty – došel značné popularity a leckde se používá dodnes.

Začaly také vznikat i první proto-frameworky/CMS (Content-Management-System). Za všechny vyjmenujme například Seagull nebo eZComponents. Na nějaký komplexnější framework ovšem v PHP komunitě stále nedozrával čas. Slabá podpora objektového programování v PHP 4 vývoji podobných nástrojů příliš nepřála. PHP tak zůstávalo vyhrazeno pro nepříliš čisté programování webových stránek tzv „z prázdného listu“, které bylo sice z počátku rychlé, později však takto napsanou webovou aplikaci bylo velmi obtížné jakkoliv rozšiřovat. Bohužel takto bývá většinou PHP používáno i dnes, kdy jsou jeho možnosti již mnohem větší.

Než se dostaneme k PHP 5, podívejme se nejdříve na nejpoužívanější jazyky pro vývoj na webu. Java nebo .NET vlastně nejsou přímými konkurenty PHP. Ne proto, že by v PHP nebylo možné postavit robustní webové aplikace jako v oněch dvou výše zmíněných. Tak tomu není. S příchodem silných frameworků pro PHP 5 bych se nebál použít tento jazyk i pro náročné a rozsáhlé aplikace. Spíše je to o tom, že jak projektoví manažeři, tak vývojáři pro Javu a .NET se prostě s PHP komunitou neprolínají. Těžko si představovat, že se bude vedení rozhodovat, jestli na web použít .NET nebo PHP. Rozpočet, zkušenosti a další závazky spíše determinují danou společnost buď k použití nástrojů jako .NET a Java, nebo naopak levných open source řešení. Z nich jsou hlavní dynamické jazyky PHP, Python nebo Ruby. V současné době jsou zřejmě největšími konkurenty PHP právě Ruby a Python.

Ač je pravda, že PHP mělo a má výraznou převahu v kvantitě hostovaných serverů, tak tomu tak nemuselo a v budoucnu ani nemusí nadále být. Samozřejmě úspěch a rozšířenost PHP je daná několika vlivy. Jedním z nich je určitě jednoduchá naučitelnost jazyka. Dále jednoduchá instalace na sdílený hosting (přes tolikrát proklínané „magic quotes“ nebo „safe mod“ – z těchto možností PHP pod Apachem jedině získávalo). Jedním z vlivů toho, že se PHP stále drží na špičce použitých programovacích jazyků, je i to, že se objevila nová verze řady 5. Po dětských nemocech počátečních verzí a skepsi programátorů zvyklých na PHP 4 by si asi dnes již hodně lidí neumělo svoji práci bez pětky vůbec představit. Právě pětková verze přinesla možnosti pro vznik velkých nástrojů jako jsou Zend Framework, CakePHP, Symfony a další. A to hlavně svým vylepšeným objektovým přístupem, lepší podporou utf8, množstvím nových funkcí a knihoven do PHP přímo zabudovaných, PDO knihovnou pro přístup k databázi a také solidní prací s xml.

Spolu s nečekaným nástupem jazyka Ruby mezi webovou sféru a jeho frameworkem Ruby on Rails stihlo PHP s verzí 5 zavčas doběhnout ujíždějící vlak. Po objevení se RoR se architektura MVC (Model-View-Controller) webových aplikací stala vskutku hitem a ostatní frameworky se nechaly inspirovat.

Přehled PHP frameworků

Zend Framework

Mezi nejznámější PHP framework dozajista patří Zend Framework, podporovaný vývojáři jádra PHP. Začal se vyvíjet od roku 2005. V současné verzi 1.5 dospěl do stádia velice dobré použitelnosti. Typické je, že každý framework vychází z jiných pohnutek. Ze začátku řeší nějaké konkrétní potřeby, ale čím dále se rozvíjí, tím více se přibližuje ostatním obecnějším řešením. Zend byl od počátku stavěn pomocí modulárních balíčků, kdy mají třídy jasně strukturované pojmenování a je možné různé balíčky používat samostatně. Návrhy tříd jsou dělány striktně podle návrhových vzorů. Je kladen důraz na to, aby si programátor mohl třídy sám rozšiřovat. Za tuto skvělou modularitu platí Zend Framework přílišnou „ukecaností“ zdrojového kódu. Bylo by správné ale poznamenat, že to je spíše „bug“ samotného PHP, kterému prostě v syntaxi chybí výrazivo, které by kód zjednodušilo.

Zend Frameworku bývá vyčítána pomalost. Pokud váš hostér vlastní Zend Optimizer nebo Accelerator, můžete být v klidu. Pokud ne a váš web je navštěvovaný více, než je serveru zdrávo, můžete využít připravenou cache. Tu nabízejí všechny velké frameworky.

Dalším důsledkem počátečního zaměření se Zend Frameworku hlavně na formu než na obsah, je i to, že některé užitečné knihovny – v jiných frameworcích už dávno přítomny – se přidávají až v posledních verzích (např. Zend_Layout). Ovšem to, že Zend stojí na solidních základech, je do budoucna veliké plus.

Symfony

Framework Symfony vychází z co největší úspory psaní kódu programátorem. Dostal se tak daleko, že poměrně velkou část kódu „rozsekal“ do konfiguračních souborů, které se píšou ve velmi úsporném a čitelném syntaktickém zápisu zvaném YAML. Je to deklarativní metoda programování a pokud si na ni zvyknete, je jistě velmi produktivní. Bonusem je též generovaná administrace pro vaší aplikaci. Na druhou stranu je pravda, že ovládnout Symfony trvá zřejmě ze všech velkých frameworků nejdéle.

Symfony úzce spolupracovalo s Propelem – jednou z prvních ORM knihoven v PHP. Obsahuje spoustu pluginů, které mají programátorovi co nejvíce ulehčovat práci při standardních postupech programování na webu. Nicméně framework se zaměřením od začátku velice praktickým se nyní také snaží postupně stávat více obecným (např. odstranění závislosti na Propelu do pluginu atd.)

CakePHP

Filosofií CakePHP je jednoduchost. Inspiruje se v RoR. Dobře navrhnuté základní konvenční chování, ale přesto výrazná variabilita. Framework se zaměřuje především na přehledný a krátký zdrojový kód, kvalitní databázovou vrstvu typu active record, promyšlené view helpery a pokrývá běžné operace, které programátor potřebuje. Pro vývoj standardního CMS či e-shopu je to velice vhodný nástroj. CakePHP lze velice snadno integrovat se Zend Frameworkem a v této kombinaci je výborný, protože kombinuje svou jednoduchost a přímočarost se sílou Zendu.

Další frameworky…

Dokumentace pro všechny tyto frameworky je na velice dobré úrovni. Než se člověk s nimi naučí pracovat, jistě nějaký ten týden zabere, ale je to jen a jen užitečná investice. Jednak se dozvíte více o programování v PHP a návrhových vzorech, ale hlavně vám to do budoucna umožní zrychlit práci a dá vám tak nespornou výhodu před ostatními. Je jasné, že pokud se pustíte do studia některého z frameworků typu MVC, případné učení dalších vám již půjde mnohem rychleji.

Programovat svůj vlastní nebo firemní framework v PHP, pokud nepotřebujete nějaké hodně exotické chování aplikace, se už opravdu nevyplatí, pokud nemáte opravdu geniální nápady.

Tady bych se rád zmínil o frameworku Nette vyvíjeném známým českým open source programátorem Davidem Grudlem, autorem Texy! nebo databázové knihovny dibi. V Česku se staly jeho nástroje velice populární. Těžko říci, zda je to jednoduchost, s jakou se používají, kousek českého fištrónu, který autor do svého kódu vkládá, nebo prostě jen podpora v češtině pro tyto produkty.

Každopádně Nette framework je výjimečný tím, že se snaží dostat za obvyklé MVC schéma. Představuje komponenty (z toho vyplývající modulárnost), komunikaci mezi nimi; programování řízené událostmi; šablonovací jazyk s vlastními komponentami (datagrid atd). Přichází s originálními nápady nebo slučuje to nejužitečnější, co se jinde objeví. Na větší představení tohoto frameworku přímo od autora se můžete přijít podívat na připravované konferenci.

Další zajímavé, ale již méně známé, jsou frameworky jako KohanaPHP, framework PRADO (inspirující se v .NET), Akelos nebo CodeIgniter. Větší přehled frameworků najdete na přehledové stránce našeho blogu Czech PHP User Group. Jsou tam také k dispozici videa z přednášek již konaných PHP konferencí.

Budoucnost PHP

Z české kotliny se zdá, že pozice PHP mezi dynamickými jazyky na webu je neochvějná. Je to tak i ve světě? Těžko říci, ale je tam rozhodně více viditelná přítomnost RoR i Pythonu než u nás. Když se podíváme na podporu Pythonu, vidíme, že za ním plně stojí Google. U nás se využívá zatím izolovaně, ale zato také ve velkých firmách, jako je Seznam nebo Centrum. Ruby je využíváno spíše sporadicky. Problém je zřejmě s hostingy. Pokud říkám problém s hostingy, tak bohužel myslím „v Česku dvojnásobný problém s hostingy“. Hostingů na Ruby je jak šafránu, o Pythonu nemluvě. Pravda, u Pythonu, ač ho obsahuje prakticky každá linuxová distribuce, je ten nejhlavnější důvod, že hostéři vlastně nevědí, jak ho mají hostovat. Zřejmě nejlepší metodou jest mod_wsgi pod Apache, kterýžto modul teprve před pár dny došel do verze 2.0. Ten již umí po změně ve zdrojovém kódu provést restartovat běžící webovou aplikaci bez restartu samotného Apache. O použití jiného serveru než Apache se českým poskytovatelům sdíleného hostingu ještě asi dlouho nebude ani zdát.

Dá se říci, že PHP je nyní ve svých nejlepších letech. 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ě, o mod_wsgi jsem se již zmiňoval. Takže PHP 6 – unicode by nemělo přijít příliš pozdě po nich. Zatím má PHP náskok, ale budoucnost je otevřená.

Další způsob, kterým by PHP mohlo nabídnout něco navíc oproti ostatním jazykům, by bylo zabudování Zend Frameworku přímo do PHP. Jednak by se zvětšila rychlost aplikací postavených na tomto frameworku, a také by byla zaručena 100% dostupnost frameworku bez zvláštní instalace.

Závěr

Co bych doporučil všem, kteří v PHP již nějaký ten pátek programují nebo naopak teprve začínají? Kam mají obrátit svoji pozornost? S čím pracovat? Mají začít se učit nějaký framework, pokud tak ještě neučinili?

Na poslední otázku bych odpověděl: určitě ano. Naučit se nějaký silný PHP framework se vám jistě vyplatí. Nejenom, že si zlepšíte své schopnosti a kvalifikaci v programování, ale snad budete mít z programování i větší radost. Měli byste se zabývat jen podstatnou logikou vaší aplikace a ne vším tím nudným psaním okolo.

Do kterého ale že to frameworku se pustit? Toť skoro politická otázka. Je dobré si ze začátku udělat přehled, pročíst si trochu dokumentace nebo shlédnout naše přednášková videa. Každému člověku vyhovuje něco jiného a líbí se mu jiný přístup.

Kdybych měl přece jen nějaký framework doporučit, osobně bych volil takto: z důvodů rychlého a dobře zvládnutého vývoje samotného frameworku komunitou se mi nyní jeví jako nejvíce perspektivní Zend Framework. Možná bych ho doplnil nějakou vhodnější databázovou knihovnou než doposud Zend poskytuje. Přitom bych nespouštěl oči z vývoje Nette a sledoval jeho postupné představení. Samozřejmě s čím více nástroji se seznámíte, tím větší budete mít přehled a pokud to dokážete zúročit ve své práci, tím lépe pro vás.

Mnoho programátorů nyní získává zkušenosti s webovými frameworky. Dělají se v nich komerční řešení, intranety i veřejné stránky. Konečně se i v open source komunitě začínají přepisovat stávající špatně napsané, ale mezi uživateli populární, CMS a další. Webové frameworky se již nyní prosazují jako rychlý způsob vytváření modulárních aplikací.

Pozvánka

Pokud budete mít čas, zvu vás na konferenci o PHP frameworcích, kde se dozvíte více konkrétních informací o těch nejzajímavějších. Další zajímavá témata budete jistě moci probrat při posezení v občerstvovacím zařízení po akci.

Konference PHP frameworky jaro 2008 se koná v sobotu 12. dubna 2008 na Univerzitě Pardubice.

Přednášky:

Na konferenci je též prostor pro firmy, které chtějí seznámit odbornou veřejnost se svými projekty a nabídnout práci programátorům.

Ing. Václav Stoupa ve spolupráci s Jiřím Kneslem, Czech PHP User Group.


Sdružení Czech PHP User Group, neboli Česká uživatelské skupina PHP programátorů, vzniklo v říjnu 2007 bezprostředně po vůbec první konferenci o PHP frameworcích, která se v Česku konala. Sdružuje zhruba 60 programátorů, kteří mají zájem o efektivní a rychlý vývoj aplikací v PHP pomocí kvalitních programovacích nástrojů a postupů. Skupina používá ke komunikaci e-mailové konference a vlastního blogu. V lednu 2008 se podařilo uspořádat druhou konferenci v Brně. Po skončení třetí akce v Pardubicích, budou oznámeny plány pro další rozvoj sdružení. Rádi bychom dále podporovali vývoj webových aplikací pomocí kvalitního kódu ať už lektorskou činností, vývojem PHP nástrojů nebo celých webových projektů.

Našli jste v článku chybu?
Vitalia.cz: Galerie: Strouhanka ze starých rohlíků? Kdepak

Galerie: Strouhanka ze starých rohlíků? Kdepak

Měšec.cz: Platíme NFC mobilem. Konečně to funguje!

Platíme NFC mobilem. Konečně to funguje!

Měšec.cz: Co když na dovolené přijdete o kartu?

Co když na dovolené přijdete o kartu?

Podnikatel.cz: Babiš bude mít přehled o vašich účtech

Babiš bude mít přehled o vašich účtech

Lupa.cz: Co najdete uvnitř kosmické sondy?

Co najdete uvnitř kosmické sondy?

Vitalia.cz: Za její cukrovkou stojí rodiče

Za její cukrovkou stojí rodiče

Lupa.cz: Nechcete datacentrum? Jsou na prodej

Nechcete datacentrum? Jsou na prodej

Podnikatel.cz: Novela zákoníku práce. Řeší homeworking

Novela zákoníku práce. Řeší homeworking

Vitalia.cz: Vakcína Cervarix je oficiálně i pro chlapce

Vakcína Cervarix je oficiálně i pro chlapce

Měšec.cz: Do ostravské MHD bez jízdenky. Stačí karta

Do ostravské MHD bez jízdenky. Stačí karta

Vitalia.cz: Ženy, které milují příliš, jsou neštěstí

Ženy, které milují příliš, jsou neštěstí

Lupa.cz: Olympiáda zakázala GIFy. Moc to nepomáhá

Olympiáda zakázala GIFy. Moc to nepomáhá

Vitalia.cz: 9 potravin, které nesmí chybět v jídelníčku těhotné

9 potravin, které nesmí chybět v jídelníčku těhotné

Vitalia.cz: „Sjíždět“ porno není bez rizika

„Sjíždět“ porno není bez rizika

Podnikatel.cz: Pozor na vykuky, imitují služby České pošty

Pozor na vykuky, imitují služby České pošty

Podnikatel.cz: Oznamte skutečné sídlo firmy, jinak zaplatíte

Oznamte skutečné sídlo firmy, jinak zaplatíte

Podnikatel.cz: Kauza z Vinohrad pokračuje. Policie se omlouvá

Kauza z Vinohrad pokračuje. Policie se omlouvá

Měšec.cz: Test: Výběry z bankomatů v cizině a kurzy

Test: Výběry z bankomatů v cizině a kurzy

Měšec.cz: Co s reklamací, když e-shop krachuje?

Co s reklamací, když e-shop krachuje?

Lupa.cz: Kdo vykrádá LinkedIn? Zjistit to má soud

Kdo vykrádá LinkedIn? Zjistit to má soud