Phalcon - krátký přehled 28/09/2015

V tomto článku bych se rád zaměřil na Phalcon Framework, se kterým jsem nedávno přišel do styku a velmi si ho zamiloval. Po několika letech vývoje v Nette jsem tedy na chvíli přesedlal na úplně jiný nástroj.

Přehled

Phalcon je C-compiled PHP framework, který je dodávaný jako PHP extension. Původně byl napsaný v C-čku, ale od verze 2.0 se píše v optimalizovaném jazyku Zephir. Vypadá to jako PHP, syntaxe je celkem obdobná, výsledek je DDL/SO extension.

Nejlepší vlastnost, podle mě, je rychlost frameworku. Ve většině případů se dostanete 5-10x rychlejší odezvu. Tam, kde v Nette dostávate 100-300ms, u Phalconu je to 20-50ms. Když k tomu přidám běh v CLI při řešení nějakých front nebo cronu, tak tu máme nadupaný nástroj.

Horší je to se šablonovacím enginem Volt, který, řekněme si to upřímě, není jako supr Latte mašina. Naštěstí existuje port Latte do Phalconu, Platte. S Platte už se pracuje o poznání lépe, avšak AJAX nebo vykreslení formulářu trochu pokulhává. To ale nemám Phalconu za zlé, neboť jeho využití vidím hlavně na backendu.

Na statické dependency injection jsem si musel také celkem dlouho zvykat. Hlavně mi chybělo automatické generování továrniček, autowiring a našeptávání. Pokud jste zvyklí, že vám IDE našeptává a už si bez toho neumíte představit programování, tak ve Phalconu nepochodíte. Sice existují nějaké provizorní hlavičky tříd, ale bez možnosti prolézání kódu, člověk aby měl pořád otevřený Github. Po chvíli práce, debugování a spolu s Tracy jsem si na to zvykl. Prostě tak nějak počítate, že tam ta služba bude a bude mít co je potřeba. Zkrátka Phalcon je statický, tak se to tak musí brát.

Výčet feature je opravdu velký, tak to zkusím jenom ve zkratce. Automatické generování entit, formulářů a controllerů. Podpora pro REST api přes anotací. ORM pro MySQL/PostgreSQL/SQlite, ODM pro MongoDB, pokročilé validace a další…

Porty

Platte [GitHub]

Kafe pro Phalcon. S podporou jakou jsme zvyklí z Nette a také z Phalconu. Rozdělení šablon ve Phalconu je trochu jiné než v Nette, pokud budete zkoušet, dejte na to pozor.

PiDiC [GitHub]

Nette Dependency Injection magie pro Phalcon. Podařilo se zachovat funkcionalitu magie a zárověn přístup ze strany Phalconu. Tím pádem mužete vyměnit DI za běhu a nic výrazného se nezmění. Je zachována možnost extensions jak je známe z Nette, máme tedy na výběr z doplňků pro Nette, ale i pro Phalcon.

Závěrem

Výhody:

  • Rychlost
  • Dokumentace
  • Back-end
  • Relativně velká komunita
  • Phalcon DevTools

Nevýhody:

  • Šablonovací systém
  • Zdrojové kódy (nelze v nich snadno číst)
  • Front-end
  • Málo hotových rešení
  • V ČR nikdo neporadí