SlideShare uma empresa Scribd logo
1 de 74
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
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
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 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

Mais conteúdo relacionado

Destaque

06 prez10(tvorba webu)
06 prez10(tvorba webu)06 prez10(tvorba webu)
06 prez10(tvorba webu)olc_user
 
Nikola luxova
Nikola luxovaNikola luxova
Nikola luxovacekaon
 
Av technika 13
Av technika 13Av technika 13
Av technika 13olc_user
 
ReactPHP + Symfony = profit aneb 1000req/s přes Symfony s minimálními nár...
ReactPHP + Symfony = profit aneb 1000req/s přes Symfony s minimálními nár...ReactPHP + Symfony = profit aneb 1000req/s přes Symfony s minimálními nár...
ReactPHP + Symfony = profit aneb 1000req/s přes Symfony s minimálními nár...Jakub Kulhan
 
Tomáš Votruba - Jak přežít Symfony 3 (1. sraz přátel Symfony v Praze)
Tomáš Votruba - Jak přežít Symfony 3 (1. sraz přátel Symfony v Praze)Tomáš Votruba - Jak přežít Symfony 3 (1. sraz přátel Symfony v Praze)
Tomáš Votruba - Jak přežít Symfony 3 (1. sraz přátel Symfony v Praze)Péhápkaři
 
Deployment PHP aplikací | WebExpo 2011
Deployment PHP aplikací | WebExpo 2011Deployment PHP aplikací | WebExpo 2011
Deployment PHP aplikací | WebExpo 2011Jan Mittner
 
ORM Designer: Speed up your ORM development
ORM Designer: Speed up your ORM developmentORM Designer: Speed up your ORM development
ORM Designer: Speed up your ORM developmentBrnoPHP
 
Jaroslav zlamal
Jaroslav zlamalJaroslav zlamal
Jaroslav zlamalcekaon
 
VIM - nejefektivnější editor na světě
VIM - nejefektivnější editor na světěVIM - nejefektivnější editor na světě
VIM - nejefektivnější editor na světěClevis s.r.o.
 
What makes a good developer from a management perspective
What makes a good developer from a management perspectiveWhat makes a good developer from a management perspective
What makes a good developer from a management perspectiveBrnoPHP
 
Čtvrtkon #44 - Symfony php framework
Čtvrtkon #44 - Symfony php frameworkČtvrtkon #44 - Symfony php framework
Čtvrtkon #44 - Symfony php frameworkMartin Zeman
 
Martin Froněk - Jak využít soft skills ve svůj prospěch 2 (15. sraz přátel PH...
Martin Froněk - Jak využít soft skills ve svůj prospěch 2 (15. sraz přátel PH...Martin Froněk - Jak využít soft skills ve svůj prospěch 2 (15. sraz přátel PH...
Martin Froněk - Jak využít soft skills ve svůj prospěch 2 (15. sraz přátel PH...Péhápkaři
 
Filip Procházka - Testování prakticky
Filip Procházka - Testování praktickyFilip Procházka - Testování prakticky
Filip Procházka - Testování praktickyKonference PHPlive
 
commit => #GitHub => #CircleCI => #Docker => #Kubernetes #AWS cluster
commit => #GitHub => #CircleCI => #Docker => #Kubernetes #AWS clustercommit => #GitHub => #CircleCI => #Docker => #Kubernetes #AWS cluster
commit => #GitHub => #CircleCI => #Docker => #Kubernetes #AWS clusterJakub Kulhan
 
Vývojáři sobě: 0. sraz - PHP: Appka v Nette
Vývojáři sobě: 0. sraz - PHP: Appka v NetteVývojáři sobě: 0. sraz - PHP: Appka v Nette
Vývojáři sobě: 0. sraz - PHP: Appka v NetteVývojáři sobě
 
Microservice Stategies - Scaling your API design workflow
Microservice Stategies - Scaling your API design workflowMicroservice Stategies - Scaling your API design workflow
Microservice Stategies - Scaling your API design workflowJakub Nesetril
 
Real-time Web a NodeJS
Real-time Web a NodeJSReal-time Web a NodeJS
Real-time Web a NodeJSJakub Nesetril
 
Dependency Injection vs Service Locator - Best Practice
Dependency Injection vs Service Locator - Best PracticeDependency Injection vs Service Locator - Best Practice
Dependency Injection vs Service Locator - Best PracticeLars-Erik Kindblad
 

Destaque (20)

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

Semelhante a Symfony vs Nette vs Phalcon

vSphere automation workshop python
vSphere automation workshop pythonvSphere automation workshop python
vSphere automation workshop pythonVladan Laxa
 
Jan Čislinský: Seznámení se Sourcery aneb Základy metaprogramování ve Swiftu
Jan Čislinský: Seznámení se Sourcery aneb Základy metaprogramování ve SwiftuJan Čislinský: Seznámení se Sourcery aneb Základy metaprogramování ve Swiftu
Jan Čislinský: Seznámení se Sourcery aneb Základy metaprogramování ve Swiftumdevtalk
 
Petr Nikolas Prokop - Symfony framework (0. sraz přátel Symfony v Hradci Král...
Petr Nikolas Prokop - Symfony framework (0. sraz přátel Symfony v Hradci Král...Petr Nikolas Prokop - Symfony framework (0. sraz přátel Symfony v Hradci Král...
Petr Nikolas Prokop - Symfony framework (0. sraz přátel Symfony v Hradci Král...Péhápkaři
 
Michal Majer / I testování může být zábava
Michal Majer / I testování může být zábavaMichal Majer / I testování může být zábava
Michal Majer / I testování může být zábavaMichal Majer
 
atoto.cz - jak na snadnou integraci Codeception
atoto.cz - jak na snadnou integraci Codeceptionatoto.cz - jak na snadnou integraci Codeception
atoto.cz - jak na snadnou integraci Codeceptionatotocz
 
Použití Next.js a Reactí UI khinihovny v aplikaci
Použití Next.js a Reactí UI khinihovny v aplikaciPoužití Next.js a Reactí UI khinihovny v aplikaci
Použití Next.js a Reactí UI khinihovny v aplikaciMartin Krištof
 
Testování klientských Javascriptových aplikací
Testování klientských Javascriptových aplikacíTestování klientských Javascriptových aplikací
Testování klientských Javascriptových aplikacíMichal Aichinger
 
Blackfire.io - Fire up your php app performance [Jan Kopp] (7. sraz, Praha)
Blackfire.io - Fire up your php app performance [Jan Kopp] (7. sraz, Praha)Blackfire.io - Fire up your php app performance [Jan Kopp] (7. sraz, Praha)
Blackfire.io - Fire up your php app performance [Jan Kopp] (7. sraz, Praha)Péhápkaři
 
Představení Ruby on Rails
Představení Ruby on RailsPředstavení Ruby on Rails
Představení Ruby on Railsigloonet
 
Talend Open Studio DQ
Talend Open Studio DQTalend Open Studio DQ
Talend Open Studio DQdpejcoch
 
Výběr vhodných technologii pro startup v prostředí cloudu
Výběr vhodných technologii pro startup v prostředí clouduVýběr vhodných technologii pro startup v prostředí cloudu
Výběr vhodných technologii pro startup v prostředí clouduJan Kodera
 
WP Frameworky - WordCamp Praha 2018
WP Frameworky - WordCamp Praha 2018WP Frameworky - WordCamp Praha 2018
WP Frameworky - WordCamp Praha 2018Brilo Team
 
Optimalizace Symfony na devu
 Optimalizace Symfony na devu Optimalizace Symfony na devu
Optimalizace Symfony na devuVašek Purchart
 
Vašek Purchart - Optimalizace Symfony na devu (2. sraz přátel Symfony v Praze)
Vašek Purchart - Optimalizace Symfony na devu (2. sraz přátel Symfony v Praze)Vašek Purchart - Optimalizace Symfony na devu (2. sraz přátel Symfony v Praze)
Vašek Purchart - Optimalizace Symfony na devu (2. sraz přátel Symfony v Praze)Péhápkaři
 

Semelhante a Symfony vs Nette vs Phalcon (20)

vSphere automation workshop python
vSphere automation workshop pythonvSphere automation workshop python
vSphere automation workshop python
 
Jan Čislinský: Seznámení se Sourcery aneb Základy metaprogramování ve Swiftu
Jan Čislinský: Seznámení se Sourcery aneb Základy metaprogramování ve SwiftuJan Čislinský: Seznámení se Sourcery aneb Základy metaprogramování ve Swiftu
Jan Čislinský: Seznámení se Sourcery aneb Základy metaprogramování ve Swiftu
 
Petr Nikolas Prokop - Symfony framework (0. sraz přátel Symfony v Hradci Král...
Petr Nikolas Prokop - Symfony framework (0. sraz přátel Symfony v Hradci Král...Petr Nikolas Prokop - Symfony framework (0. sraz přátel Symfony v Hradci Král...
Petr Nikolas Prokop - Symfony framework (0. sraz přátel Symfony v Hradci Král...
 
Michal Majer / I testování může být zábava
Michal Majer / I testování může být zábavaMichal Majer / I testování může být zábava
Michal Majer / I testování může být zábava
 
atoto.cz - jak na snadnou integraci Codeception
atoto.cz - jak na snadnou integraci Codeceptionatoto.cz - jak na snadnou integraci Codeception
atoto.cz - jak na snadnou integraci Codeception
 
R85 Designer Tcl
R85 Designer TclR85 Designer Tcl
R85 Designer Tcl
 
R85 Designer
R85 DesignerR85 Designer
R85 Designer
 
Použití Next.js a Reactí UI khinihovny v aplikaci
Použití Next.js a Reactí UI khinihovny v aplikaciPoužití Next.js a Reactí UI khinihovny v aplikaci
Použití Next.js a Reactí UI khinihovny v aplikaci
 
Testování klientských Javascriptových aplikací
Testování klientských Javascriptových aplikacíTestování klientských Javascriptových aplikací
Testování klientských Javascriptových aplikací
 
Test stack CzechTest 2016
Test stack   CzechTest 2016Test stack   CzechTest 2016
Test stack CzechTest 2016
 
Blackfire.io - Fire up your php app performance [Jan Kopp] (7. sraz, Praha)
Blackfire.io - Fire up your php app performance [Jan Kopp] (7. sraz, Praha)Blackfire.io - Fire up your php app performance [Jan Kopp] (7. sraz, Praha)
Blackfire.io - Fire up your php app performance [Jan Kopp] (7. sraz, Praha)
 
TNPW2-2012-05
TNPW2-2012-05TNPW2-2012-05
TNPW2-2012-05
 
TNPW2-2012-03
TNPW2-2012-03TNPW2-2012-03
TNPW2-2012-03
 
Představení Ruby on Rails
Představení Ruby on RailsPředstavení Ruby on Rails
Představení Ruby on Rails
 
Talend Open Studio DQ
Talend Open Studio DQTalend Open Studio DQ
Talend Open Studio DQ
 
TNPW2-2013-05
TNPW2-2013-05TNPW2-2013-05
TNPW2-2013-05
 
Výběr vhodných technologii pro startup v prostředí cloudu
Výběr vhodných technologii pro startup v prostředí clouduVýběr vhodných technologii pro startup v prostředí cloudu
Výběr vhodných technologii pro startup v prostředí cloudu
 
WP Frameworky - WordCamp Praha 2018
WP Frameworky - WordCamp Praha 2018WP Frameworky - WordCamp Praha 2018
WP Frameworky - WordCamp Praha 2018
 
Optimalizace Symfony na devu
 Optimalizace Symfony na devu Optimalizace Symfony na devu
Optimalizace Symfony na devu
 
Vašek Purchart - Optimalizace Symfony na devu (2. sraz přátel Symfony v Praze)
Vašek Purchart - Optimalizace Symfony na devu (2. sraz přátel Symfony v Praze)Vašek Purchart - Optimalizace Symfony na devu (2. sraz přátel Symfony v Praze)
Vašek Purchart - Optimalizace Symfony na devu (2. sraz přátel Symfony v Praze)
 

Symfony vs Nette vs Phalcon

Notas do Editor

  1. 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
  2. Ale jsou vidět pouze PHP interfaces
  3. Použití jednotlivých komponent frameworku, které ale jdou použít I samostatně
  4. 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
  5. Načítání bundles v závislosti na prostředí.
  6. Definice HTTP metod, formát vrácených dat (HTML, XML)
  7. Regulární výrazy, one_way routy, debugování přes laděnku První routa co vyhovuje vždy vyhrává
  8. 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
  9. Ve výchozím stavu je vše v rámci bundles Lze generovat pomocí CLI Bundles lze přetěžovat
  10. Bez rendereru, jako má Nette, nebo Symfony. Nutno napsat si vlastní renderer.