Symfony vs Nette vs Phalcon

Post on 25-May-2015

709 views 9 download

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