20. 09. 2015
V předchozím postu jsem popsal podle jakých kritérií jsem vybíral framework pro přepsání eshopu SvětBot.cz. Nyní rád krátce představil vítěze, kterým se stal Phalcon, první PHP framework implementovaný v jazyce C.
Čím se Phalcon liší od ostatních
Phalcon je implementovaný v jazyce C jako rozšíření PHP, čímž vzniká velká konkureční výhoda v podobě rychlosti a nízké paměťové náročnosti, tím ale důraz na výkon nekončí. Součástí frameworku je i rozsáhlá podpora cachování.
Velmi příjemně mne překvapilo zpracování frameworku i dokumentace. Za obojím je vidět moře práce někoho, kdo své řemeslo ovládá a s řemeslnou zručností se soustředí na každý drobný detail. Celek pak musí potěšit duši každého programátora, který hledá jednoduchý, rychlý a přehledný framework, který sice možná nemá vlastní utilitu na práci s obrázky, ale zato se stane pevným a stabilním základem jakéhokoliv webového projektu.
Výhody
Pokusím se nastínit hlavní pozitiva Phalconu, tak jak je subjektivně vnímám v kontextu SvětaBot.
Výkon bez kompromisů
Ano existují i jiné rychlé PHP frameworky, většinou ale dosahují rychlosti na úkor funkcionality, čím méně kódu se musí vykonat, tím rychlejší odbavení požadavků. Navíc Phalcon je stále výrazně rychlejší než „lehké“ frameworky jako je třeba Slim.
Cachování
Podpora cachování je v Phalconu na vysoké úrovni. Uchovat pro další použití si můžete cokoliv od celé stránky, přes jednotlivé bloky až po SQL dotazy, nebo jednotlivé proměnné. Cache umí uložit do souboru, nebo paměti, případně obojí. U poslední varianty framework v případě potřeby dat nejprve zkusí najít data v paměti, pokud zde nejsou sahá na disk a až jako poslední možnost spouští jejich generování.
Zatímco ve výkonech frameworků je rozdíl v časech pro odbavení requestů v desítkách procent, dobře udělané cachování může web zrychlit až o několik řádů. Přečíst HTML ze souboru a vrátit jej uživateli je zkrátka výrazně rychlejší, než vykonávat seberychlejší kód a dotazy do databáze.
Dokumentace & čistota návrhu
Autoři Phalconu myslí na uživatele svého frameworku a připravili pro ně opravdu přehlednou, užitečnou a aktuální dokumentaci. Se skvělou dokumentací se pojí i čistota návrhu architektury a API celého frameworku. Vše lícuje a zapadá do sebe, metody i třídy jsou intuitivně pojmenované. Učící křivka je neuvěřitelně strmá.
MVC
Phalcon staví na MVC patternu, který bude většina z Vás znát z jiných frameworků. Potřebujete-li ještě hrubší dělení můžete aplikaci dále rozčlenit do modulů. Naopak pokud potřebujete něco opravdu jednoduchého, je tu podpora tzv. mikro aplikací.
Vlastní ORM
Součástí modelů je vlastní poměrně slušně propracované ORM. Zůstává samozřejmě možnost dělat si vlastní dotazy pomocí query-builderu, nebo čístého SQL.
CLI a CRON
Framework je připravený i pro vytváření command line aplikací, které se pak dají snadno použít pro spouštění CRON úloh.
Nevýhody
Chybí profiler
Z frameworků jako Codeigniter, nebo Nette známe užitečné ladící výpisy, zpravidla připojované na konec stránky, kde je možné sledovat čas potřebný na vygenerování stránky, dobu trvání jednotlivých SQL dotazů, množství zkonzumované paměti, atp. Tuto možnost prozatím Phalcon nenabízí a odkazuje vývojáře na xDebug. Další variantou je využít některý z produktů třetích stran, jako je třeba Phalcon Debug Widget (PDW).
Není snadné nahlédnout do útrob frameworku
U klasických PHP frameworků lze velmi snadno procházet jejich kód, debugovat jej pomocí xDebug, případně dokonce dělat úpravy přimo do samotného frameworku. To u zkompilovaného rozšíření samozřejmě takto snadno možné není. Naštěstí díky skvělé dokumentaci není studování zdrojových kódů frameworku potřeba a pokud by náhodou tato situace nastala, zdroje v jazyce C jsou dustupné na GitHubu.
Phalcon v2.0 a Zephir
Tým frameworku Phalcon nyní usilovně pracuje na verzi 2.0, který již nebude naspsaný v jazyce C, ale ve vysokoúrovňovém jazyce Zephir. Zephir byl speciálně vytvořen pro účel tvorby vlastních rozšíření pro PHP a následně se kompiluje do do příkazů jazyka C. Verze 2.0 je dostupná prozatím jako alpha preview.