symfony vs nette vs phalcon
DESCRIPTION
Srovnání Symfony, Nette a Phalcon frameworku. Hlavní parametry a srovnání jednotlivých komponent.TRANSCRIPT
Framework Symfony
vs Nette vs Phalcon
Osnova
• Co je to framework?• Srovnání frameworků• Aplikační cyklus• Komponenty frameworku
Co je to framework
• Sada knihoven, aplikační cyklus• Znovupoužitelnost (mailing, šablony, přihlašování,
testování)
• Zaměření (web-app, testování)• Filosofie, architektura• Komunita, rozšíření, opravy, dokumentace,
testy, nové funkce• Licence, sponzoring, brand
Srovnání jednotlivých frameworků
Symfony 2.5.0-dev
• PHP >5.3.3, open source, community-driven• +1000 code contributors on GitHub• +150.000 developers, +2500 bundles• +1.000.000 monthly downloads• Since 2005, under MIT license• Drupal, phpBB, Yahoo!, Joomla
Trend commitů na GitHub
Nette 2.2.2
• PHP 5.3.1 (PHP 5.2), open-source• 104 contributors (Symfony +1000)• 13.000 dl/m (Symfony +1.000.000)• cca 100 add-ons (Symfony +2.500)• Since 2008, under New BSD license• Slevomat, Mladá fronta, Csfd.cz, SocialBakers
Phalcon
• PHP 5.3.9 (nutné GCC), open-source• 58 contributors (Nette 104, Symfony 1000+)• Since 2011, under New BSD license
Phalcon
• PHP 5.3.9 (nutné GCC), open-source• 58 contributors (Nette 104, Symfony 1000+)• Since 2011, under New BSD license
Instalace
Instalace Symfony
• composer create-project symfony/framework-standard-edition myproject/ ~2.5
Instalace Nette
• composer create-project nette/sandbox
Instalace Phalcon
• Build– sudo ./cphalcon/build/install– extension=phalcon.so
• Hotové buildy (PHP 5.3/5.4/5.5)– sudo brew install php54-phalcon– extension=php_phalcon.dll
• Doplňky - phalcon dev-tools (kvůli code-complete; jsou vidět pouze PHP interfaces)
Aplikační cyklus
Aplikační cyklus
• Front-controller (.htaccess -> index.php)• $kernel = new AppKernel('dev', true);– Předdef. 3 prostředí (dev, test, prod)– Načtení konfiguračních souborů– Registrace Bundles
• Routování (hledání kontroléru)• MVC (kontroléry, šablony)
Aplikační cyklus
• Front-controller (.htaccess -> index.php)• $kernel = new AppKernel('dev', true);– Načtení konfiguračních souborů– Registrace Bundles
• Routování (hledání controlleru)• MVC (kontroléry, šablony)
HTTP
• Request(), Response()
Aplikační cyklus
• Front-controller (.htaccess -> index.php)• $kernel = new AppKernel('dev', true);– Načtení konfiguračních souborů– Registrace Bundles
• Routování (hledání controlleru)• MVC (kontroléry, šablony)
Konfigurace Symfony
YAML formát
Konfigurace Nette
Neon formát
Konfigurace Phalcon
INIformát
Aplikační cyklus
• Front-controller (.htaccess -> index.php)• $kernel = new AppKernel('dev', true);– Načtení konfiguračních souborů– Registrace Bundles
• Routování (hledání controlleru)• MVC (kontroléry, šablony)
Bundles
Existuje i CLI generátor, který adresářovou strukturu Bundles vygeneruje. V rámci bundlesJsou I assety (CSS/JS/IMG). CLI generátor I bundle zavede do jádra, viz další slide.
Registrace Bundles
Bundles lze načítat I v závislosti na prostředí.
Registrace Bundles Nette
Registrace Bundles Phalcon
Aplikační cyklus
• Front-controller (.htaccess -> index.php)• $kernel = new AppKernel('dev', true);– Načtení konfiguračních souborů– Registrace Bundles
• Routování (hledání kontroléru)• MVC (kontroléry, šablony)
Routování
http://www.blog.cz/clanek/prvni-clanek/
Article:detail:prvni
Routování
• Možnosti: YAML, XML, PHP, PHP anotace
/blog/{slug} => AcmeBlogBundle:Blog:show
Routování
/blog/{slug} => AcmeBlogBundle:Blog:show
Routování
/blog/{slug} => AcmeBlogBundle:Blog:show
Routování
V anotaci lze I definovat formát vrácených dat (HTML, XML, JSON).
Routování Nette
Routování Phalcon
Aplikační cyklus
• Front-controller (.htaccess -> index.php)• $kernel = new AppKernel('dev', true);– Načtení konfiguračních souborů– Registrace Bundles
• Routování (hledání kontroléru)• MVC (kontroléry, šablony)
Kontroléry
Nutnost explicitně požádat o vykreslení šablony, buď pomocí anotace @Template(), nebo $this->render(). Funkce vrací array, nebo Response().
Kontroléry (anotace)
Anotace pro cache.
Kontroléry (anotace)
Kontroléry (anotace)
Kontroléry Nette
Kontroléry Phalcon
Aplikační cyklus
• Front-controller (.htaccess -> index.php)• $kernel = new AppKernel('dev', true);– Načtení konfiguračních souborů– Registrace Bundles
• Routování (hledání kontroléru)• MVC (kontroléry, šablony)
Šablony• Twig (i jako samostatný projekt)• extends, block, include, context escaping• {{ ... }}: "Says something”, {% ... %}: "Does something"
Šablony
• functions, helpers (filters)
Šablony Nette
Latte – i jako samostatný projektFunkce, filtry (helpery)Kontextové escapování (jako ostatní)Syntaxí vychází ze Smarty
Šablony Phalcon
Volt – extendování, funkce, helperyRender level – no_render, action, layout
Aplikační cyklus
• Front-controller (.htaccess -> index.php)• $kernel = new AppKernel('dev', true);– Načtení konfiguračních souborů– Registrace Bundles
• Routování (hledání kontroléru)• MVC (kontroléry, šablony)
Model (MVC)
• Doctrine 2 ORM + DBAL• Entity
Model Nette
• Nette/Database (MySQL, PostgreSQL, Sqlite 3, Sqlite 2, Oracle, MS SQL, ODBC)
• Konfigurace, routování, MVC
• Debugging• Formuláře• CLI
• Konfigurace, routování, MVC
• Debugging• Formuláře• CLI
Debugging• Web Debug Toolbar
Debugging Nette
• Laděnka (Nette/Diagnostic/Debugger)
• E-mails, FireBug
Debugging Phalcon
• Konfigurace, routování, MVC
• Debugging• Formuláře• CLI
Formuláře
Formuláře
Formuláře Nette
Formuláře Nette
Formuláře Phalcon
Nemá default renderer, takže se formuláře musí vykreslovat ručně, nebo sirenderer napsat sám.
• Konfigurace, routování, MVC
• Debugging• Formuláře• CLI
CLI nástroje
• php app/console• apc, assetic, assets, cache, container, doctrine• generate, orm, router, server, twig
• generate – doctrine entity, crud, form, bundle
CLI v Nette
• -
• Doplněk do NetBeans, PhpStorm• Skript pro FTP deploy
CLI v Phalconu
• Phalcon Developer Tools• create-controller, create-model, create-project• scaffold, migration, webtools