Symfony vs Nette vs Phalcon

1,826 views

Published on

Srovnání Symfony, Nette a Phalcon frameworku. Hlavní parametry a srovnání jednotlivých komponent.

Published in: Internet
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,826
On SlideShare
0
From Embeds
0
Number of Embeds
17
Actions
Shares
0
Downloads
7
Comments
0
Likes
2
Embeds 0
No embeds

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

    1. 1. Framework Symfony vs Nette vs Phalcon
    2. 2. Osnova • Co je to framework? • Srovnání frameworků • Aplikační cyklus • Komponenty frameworku
    3. 3. 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
    4. 4. Srovnání jednotlivých frameworků
    5. 5. 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
    6. 6. 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
    7. 7. Phalcon • PHP 5.3.9 (nutné GCC), open-source • 58 contributors (Nette 104, Symfony 1000+) • Since 2011, under New BSD license
    8. 8. Phalcon • PHP 5.3.9 (nutné GCC), open-source • 58 contributors (Nette 104, Symfony 1000+) • Since 2011, under New BSD license
    9. 9. Instalace
    10. 10. Instalace Symfony • composer create-project symfony/framework- standard-edition myproject/ ~2.5
    11. 11. Instalace Nette • composer create-project nette/sandbox
    12. 12. 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)
    13. 13. Aplikační cyklus
    14. 14. 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)
    15. 15. 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)
    16. 16. HTTP • Request(), Response()
    17. 17. 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)
    18. 18. Konfigurace Symfony YAML formát
    19. 19. Konfigurace Nette Neon formát
    20. 20. Konfigurace Phalcon INI formát
    21. 21. 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)
    22. 22. 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.
    23. 23. Registrace Bundles Bundles lze načítat I v závislosti na prostředí.
    24. 24. Registrace Bundles Nette
    25. 25. Registrace Bundles Phalcon
    26. 26. 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)
    27. 27. Routování http://www.blog.cz/clanek/prvni-clanek/ Article:detail:prvni
    28. 28. Routování • Možnosti: YAML, XML, PHP, PHP anotace /blog/{slug} => AcmeBlogBundle:Blog:show
    29. 29. Routování /blog/{slug} => AcmeBlogBundle:Blog:show
    30. 30. Routování /blog/{slug} => AcmeBlogBundle:Blog:show
    31. 31. Routování V anotaci lze I definovat formát vrácených dat (HTML, XML, JSON).
    32. 32. Routování Nette
    33. 33. Routování Phalcon
    34. 34. 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)
    35. 35. Kontroléry Nutnost explicitně požádat o vykreslení šablony, buď pomocí anotace @Template(), nebo $this->render(). Funkce vrací array, nebo Response().
    36. 36. Kontroléry (anotace) Anotace pro cache.
    37. 37. Kontroléry (anotace)
    38. 38. Kontroléry (anotace)
    39. 39. Kontroléry Nette
    40. 40. Kontroléry Phalcon
    41. 41. 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)
    42. 42. Šablony • Twig (i jako samostatný projekt) • extends, block, include, context escaping • {{ ... }}: "Says something”, {% ... %}: "Does something"
    43. 43. Šablony • functions, helpers (filters)
    44. 44. Šablony Nette Latte – i jako samostatný projekt Funkce, filtry (helpery) Kontextové escapování (jako ostatní) Syntaxí vychází ze Smarty
    45. 45. Šablony Phalcon Volt – extendování, funkce, helpery Render level – no_render, action, layout
    46. 46. 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)
    47. 47. Model (MVC) • Doctrine 2 ORM + DBAL • Entity
    48. 48. Model Nette • Nette/Database (MySQL, PostgreSQL, Sqlite 3, Sqlite 2, Oracle, MS SQL, ODBC)
    49. 49. • Konfigurace, routování, MVC • Debugging • Formuláře • CLI
    50. 50. • Konfigurace, routování, MVC • Debugging • Formuláře • CLI
    51. 51. Debugging • Web Debug Toolbar
    52. 52. Debugging Nette • Laděnka (Nette/Diagnostic/Debugger) • E-mails, FireBug
    53. 53. Debugging Phalcon
    54. 54. • Konfigurace, routování, MVC • Debugging • Formuláře • CLI
    55. 55. Formuláře
    56. 56. Formuláře
    57. 57. Formuláře Nette
    58. 58. Formuláře Nette
    59. 59. Formuláře Phalcon Nemá default renderer, takže se formuláře musí vykreslovat ručně, nebo si renderer napsat sám.
    60. 60. • Konfigurace, routování, MVC • Debugging • Formuláře • CLI
    61. 61. CLI nástroje • php app/console • apc, assetic, assets, cache, container, doctrine • generate, orm, router, server, twig • generate – doctrine entity, crud, form, bundle
    62. 62. CLI v Nette • - • Doplněk do NetBeans, PhpStorm • Skript pro FTP deploy
    63. 63. CLI v Phalconu • Phalcon Developer Tools • create-controller, create-model, create-project • scaffold, migration, webtools

    ×