SlideShare a Scribd company logo
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
Symfony vs Nette vs Phalcon
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
Symfony vs Nette vs Phalcon
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()
Symfony vs Nette vs 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í controlleru)
• MVC (kontroléry, šablony)
Konfigurace Symfony
YAML formát
Konfigurace Nette
Neon formát
Konfigurace Phalcon
INI
formá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 bundles
Jsou 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ý projekt
Funkce, filtry (helpery)
Kontextové escapování (jako ostatní)
Syntaxí vychází ze Smarty
Šablony Phalcon
Volt – extendování, funkce, helpery
Render 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
Symfony vs Nette vs Phalcon
Symfony vs Nette vs Phalcon
Symfony vs Nette vs Phalcon
Symfony vs Nette vs Phalcon
Model Nette
• Nette/Database (MySQL, PostgreSQL, Sqlite 3,
Sqlite 2, Oracle, MS SQL, ODBC)
Symfony vs Nette vs Phalcon
Symfony vs Nette vs Phalcon
• Konfigurace, routování, MVC
• Debugging
• Formuláře
• CLI
• Konfigurace, routování, MVC
• Debugging
• Formuláře
• CLI
Debugging
• Web Debug Toolbar
Symfony vs Nette vs Phalcon
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 si
renderer 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
Symfony vs Nette vs Phalcon

More Related Content

PDF
Rozšiřitelnost ASP.NET MVC
PDF
Rozšiřitelnost ASP.NET MVC
PDF
Aplikační nastavení v .NET
PDF
Testování prakticky
PDF
Tomáš Votruba - Jak nezakrnout v IT (srpen 2016)
PDF
Ansible
PDF
Profiling PHP Applications
PDF
WebSockets - how to do real-time applications in PHP
Rozšiřitelnost ASP.NET MVC
Rozšiřitelnost ASP.NET MVC
Aplikační nastavení v .NET
Testování prakticky
Tomáš Votruba - Jak nezakrnout v IT (srpen 2016)
Ansible
Profiling PHP Applications
WebSockets - how to do real-time applications in PHP

Viewers also liked (20)

PPTX
06 prez10(tvorba webu)
PPTX
Nikola luxova
PPSX
Av technika 13
PDF
ReactPHP + Symfony = profit aneb 1000req/s přes Symfony s minimálními nár...
PDF
Tomáš Votruba - Jak přežít Symfony 3 (1. sraz přátel Symfony v Praze)
PPTX
Deployment PHP aplikací | WebExpo 2011
PPTX
ORM Designer: Speed up your ORM development
PPTX
Jaroslav zlamal
TXT
VIM - nejefektivnější editor na světě
ODP
What makes a good developer from a management perspective
PPTX
Čtvrtkon #44 - Symfony php framework
PPTX
Martin Froněk - Jak využít soft skills ve svůj prospěch 2 (15. sraz přátel PH...
PDF
Filip Procházka - Testování prakticky
PPT
Neo4j Jízdomat
PDF
commit => #GitHub => #CircleCI => #Docker => #Kubernetes #AWS cluster
PDF
Vývojáři sobě: 0. sraz - PHP: Appka v Nette
PDF
Asynchronně v PHP
PDF
Microservice Stategies - Scaling your API design workflow
PDF
Real-time Web a NodeJS
PPTX
Dependency Injection vs Service Locator - Best Practice
06 prez10(tvorba webu)
Nikola luxova
Av technika 13
ReactPHP + Symfony = profit aneb 1000req/s přes Symfony s minimálními nár...
Tomáš Votruba - Jak přežít Symfony 3 (1. sraz přátel Symfony v Praze)
Deployment PHP aplikací | WebExpo 2011
ORM Designer: Speed up your ORM development
Jaroslav zlamal
VIM - nejefektivnější editor na světě
What makes a good developer from a management perspective
Čtvrtkon #44 - Symfony php framework
Martin Froněk - Jak využít soft skills ve svůj prospěch 2 (15. sraz přátel PH...
Filip Procházka - Testování prakticky
Neo4j Jízdomat
commit => #GitHub => #CircleCI => #Docker => #Kubernetes #AWS cluster
Vývojáři sobě: 0. sraz - PHP: Appka v Nette
Asynchronně v PHP
Microservice Stategies - Scaling your API design workflow
Real-time Web a NodeJS
Dependency Injection vs Service Locator - Best Practice
Ad

Similar to Symfony vs Nette vs Phalcon (20)

PDF
Tomáš Votruba – Jako Vinnetou a Old Shatterhand – refaktoruj nenávist v přáte...
PDF
Vinettou a Old Shatterhand (PhpLive.cz, jaro 2016)
PPTX
Petr Nikolas Prokop - Symfony framework (0. sraz přátel Symfony v Hradci Král...
ZIP
Nette Framework 2 at WebExpo 2010
PPTX
Vašek Purchart - Optimalizace Symfony na devu (2. sraz přátel Symfony v Praze)
PPTX
Optimalizace Symfony na devu
PPTX
MicroKernel - aneb špatný název pro Helper (5. sraz přátel Symfony v Praze)
PPTX
MicroKernel aneb spatny nazev pro Helper (5. sraz pratel Symfony)
PDF
Jak přežít symfony 3 - 1. sraz přátel Symfony v Praze (in Czech)
PDF
SymfonyCon Cluj 2017
PDF
Martin Zeman - Moje první aplikace v Symfony 3 (4. sraz přátel Symfony v Praze)
PDF
Moje první aplikace v Symfony 3 + překvapení (4. sraz přátel Symfony v Praze)
PDF
Jak jsme přepisovali Jobs.cz na Symfony
PDF
Ondra Machulda - Jak jsme přepisovali Jobs.cz na Symfony (1. sraz přátel Symf...
PDF
node.js: zápisky z fronty (Battle guide to node.js)
PDF
Před čím vás Nette ani Symfony neochrání
PDF
Tomáš Votruba - Hot news! PHP 7.0, 7.1 a Symfony 3.1, 3.2 a 3.3
PPTX
Generátory statických webů
ODP
Zend Framework
PPTX
Nette: jak rozbít atom?
Tomáš Votruba – Jako Vinnetou a Old Shatterhand – refaktoruj nenávist v přáte...
Vinettou a Old Shatterhand (PhpLive.cz, jaro 2016)
Petr Nikolas Prokop - Symfony framework (0. sraz přátel Symfony v Hradci Král...
Nette Framework 2 at WebExpo 2010
Vašek Purchart - Optimalizace Symfony na devu (2. sraz přátel Symfony v Praze)
Optimalizace Symfony na devu
MicroKernel - aneb špatný název pro Helper (5. sraz přátel Symfony v Praze)
MicroKernel aneb spatny nazev pro Helper (5. sraz pratel Symfony)
Jak přežít symfony 3 - 1. sraz přátel Symfony v Praze (in Czech)
SymfonyCon Cluj 2017
Martin Zeman - Moje první aplikace v Symfony 3 (4. sraz přátel Symfony v Praze)
Moje první aplikace v Symfony 3 + překvapení (4. sraz přátel Symfony v Praze)
Jak jsme přepisovali Jobs.cz na Symfony
Ondra Machulda - Jak jsme přepisovali Jobs.cz na Symfony (1. sraz přátel Symf...
node.js: zápisky z fronty (Battle guide to node.js)
Před čím vás Nette ani Symfony neochrání
Tomáš Votruba - Hot news! PHP 7.0, 7.1 a Symfony 3.1, 3.2 a 3.3
Generátory statických webů
Zend Framework
Nette: jak rozbít atom?
Ad

Symfony vs Nette vs Phalcon

Editor's Notes

  • #4: Architektura – MVC, REST Mailing – přílohy, správné hlavičky Šablony – escapování parametrů Přihlašování – hashování hesla Testování – bootstrap Filosofie, komunita – rozvoj, oprava chyb, nové funkce
  • #15: Ale jsou vidět pouze PHP interfaces
  • #25: Použití jednotlivých komponent frameworku, které ale jdou použít I samostatně
  • #26: Existuje k tomu CLI generátor – vytvoří základní controller, routování, default šablonu a zavede bundle do Kernel() V rámci bundles jsou I CSS/JS Bundles lze přetěžovat
  • #27: Načítání bundles v závislosti na prostředí.
  • #35: Definice HTTP metod, formát vrácených dat (HTML, XML)
  • #36: Regulární výrazy, one_way routy, debugování přes laděnku První routa co vyhovuje vždy vyhrává
  • #39: Nutnost explicitně požádat o vykreslení šablony, buď pomocí anotace @Template(), nebo $this->render() Phalcon: nemusí vracet nic, automaticky volí šablonu Nette: nemusí vracet nic, automaticky volí šablonu Funkce vrací pole, nebo přímo Response
  • #40: Ve výchozím stavu je vše v rámci bundles Lze generovat pomocí CLI Bundles lze přetěžovat
  • #70: Bez rendereru, jako má Nette, nebo Symfony. Nutno napsat si vlastní renderer.