Desymfony 2011 - Introducción a Symfony2

33,929 views

Published on

Las Jornadas Symfony 2011 comenzaron con una breve introducción a Symfony2.

Durante la presentación se muestran algunas de las características más destacadas de Symfony2 a través de diez palabras clave.

Published in: Technology, Business
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
33,929
On SlideShare
0
From Embeds
0
Number of Embeds
28,078
Actions
Shares
0
Downloads
451
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Desymfony 2011 - Introducción a Symfony2

  1. 1. Introducción a Symfony2Javier EguiluzJORNADAS SYMFONY 2011 1-3 JULIO, CASTELLÓN DESYMFONY.COM
  2. 2. Patrocinadores Patrocinadores PatrocinadoresColaboradores BRONCE PLATA PLATINO y ORO JORNADAS SYMFONY 2011 están patrocinadas por
  3. 3. importanteAlgunas partes de esta presentaciónno se pueden entender bien sin verel vídeo de su impartición.Puedes acceder al vídeo enhttp://bit.ly/sf-tutorial1
  4. 4. « framework PHP »
  5. 5. 1 2 3 4 5 6 7 8 9 10 Versátil
  6. 6. full!stackframework
  7. 7. full!stack componentsframework framework
  8. 8. full!stack components micro !framework framework framework
  9. 9. full!stack components micro !framework framework framework
  10. 10. BrowserKit EventDispatcher Routing Proyecto SymfonyClassLoader Finder Security Config Form Serializer 21 Console HttpFoundation Templating libreríasCssSelector HttpKernel TranslationDependencyInjection Locale ValidatorDomCrawler Process Yaml
  11. 11. BrowserKit EventDispatcher Routing ClassLoader Finder Security Config Form Serializer Console HttpFoundation Templating CssSelector HttpKernel Translation DependencyInjection Locale Validator DomCrawler Process Yamlcomponentes
  12. 12. BrowserKit EventDispatcher Routing ClassLoader Finder Security Config Form Serializer Console HttpFoundation Templating CssSelector HttpKernel Translation Assetic Monolog DependencyInjection Locale Validator DomCrawler Process Yaml Doctrine SwiftMailercomponentes librerías externas
  13. 13. BrowserKit EventDispatcher Routing ClassLoader Finder Security Config Form Serializer Console HttpFoundation Templating CssSelector HttpKernel Translation Assetic Monolog DependencyInjection Locale Validator DomCrawler Process Yaml Doctrine SwiftMailercomponentes librerías externas SecurityBundle DoctrineBundle FrameworkBundle +6 Bundles bundles
  14. 14. BrowserKit EventDispatcher Routing ClassLoader Finder Security Framework Config Form Serializer Symfony2 Console HttpFoundation Templating CssSelector HttpKernel Translation Assetic Monolog DependencyInjection Locale Validator DomCrawler Process Yaml Doctrine SwiftMailercomponentes librerías externas SecurityBundle DoctrineBundle FrameworkBundle +6 Bundles bundles
  15. 15. BrowserKit EventDispatcher Routing ClassLoader Framework Symfony2 HttpFoundation Templating CssSelector HttpKernel DomCrawler Yamlcomponentes
  16. 16. BrowserKit EventDispatcher Routing !Framework ClassLoader Silex HttpFoundation Templating CssSelector HttpKernel DomCrawler Yamlcomponentes 1 archivo 400 KB
  17. 17. 1 2 3 4 5 6 7 8 9 10 Útil
  18. 18. ¿ Por qué utilizar unframework bueno ?
  19. 19. retos de la programación web • persistencia datos • rendimiento • seguridad • cache • formularios • archivos web • validación • internacionalización • plantillas • tareas programadas • archivos de log • enrutamiento Fuente: Ryan Weaver, http://slidesha.re/iuptB2 (pág. 9)
  20. 20. lo que soluciona Symfony2• persistencia datos • rendimiento• seguridad • cache• formularios • archivos web• validación • internacionalización• plantillas • tareas programadas• archivos de log • enrutamiento Fuente: Ryan Weaver, http://slidesha.re/iuptB2 (pág. 9)
  21. 21. industrialización
  22. 22. 1 2 3 4 5 6 7 8 9 10Buenas prácticas
  23. 23. <http> <intercept-url pattern=/login.htm* filters=none/> <intercept-url pattern=/** access=ROLE_USER /> <form-login login-page=/login.htm default-target-url=/home.htm always-use-default-target=true /></http>
  24. 24. <http> <intercept-url pattern=/login.htm* filters=none/> <intercept-url pattern=/** access=ROLE_USER /> <form-login login-page=/login.htm default-target-url=/home.htm always-use-default-target=true /></http>firewalls: login: pattern: ^/login anonymous: ~ all: pattern: ^/ form_login: login_path: /login default_target_path: /home.htm always_use_default_target_path: true
  25. 25. EntityManagerFactory emf = Persistence.createEntityManagerFactory("manager1");EntityManager em = emf.createEntityManager();Usuario anonimo = new Usuario();anonimo.setNombre("Anónimo");anonimo.setEdad(20);em.persist(anonimo);em.flush();
  26. 26. EntityManagerFactory emf = Persistence.createEntityManagerFactory("manager1");EntityManager em = emf.createEntityManager();Usuario anonimo = new Usuario();anonimo.setNombre("Anónimo");anonimo.setEdad(20);em.persist(anonimo);em.flush();$em = $this->get(doctrine)->getEntityManager();$anonimo = new Usuario();$anonimo->setNombre("Anónimo");$anonimo->setEdad(20);$em->persist($anonimo);$em->flush();
  27. 27. ruby script/generate model Articulo titulo:string body:text
  28. 28. ruby script/generate model Articulo titulo:string body:textphp app/console doctrine:generate:entity MiBundle:Articulo "titulo:string(255) body:text"
  29. 29. {% extends "base_generic.html" %}{% block title %} {{ seccion.titulo }} {% endblock %}{% block content %}<h1> {{ seccion.titulo }} </h1>{% for articulo in articulos %} <h2> {{ articulo.titulo|upper }} </h2>{% endfor %}{% endblock %}
  30. 30. {% extends "base_generic.html" %}{% block title %} {{ seccion.titulo }} {% endblock %}{% block content %}<h1> {{ seccion.titulo }} </h1>{% for articulo in articulos %} <h2> {{ articulo.titulo|upper }} </h2>{% endfor %}{% endblock %}{% extends "::base_generic.html" %}{% block title %} {{ seccion.titulo }} {% endblock %}{% block content %}<h1> {{ seccion.titulo }} </h1>{% for articulo in articulos %} <h2> {{ articulo.titulo|upper }} </h2>{% endfor %}{% endblock %}
  31. 31. TwigAsseticMonolog
  32. 32. 1 2 3 4 5 6 7 8 9 10 Flexible
  33. 33. novato clásico experto
  34. 34. YAMLnovato clásico experto
  35. 35. YAML XMLnovato clásico experto
  36. 36. YAML XML PHPnovato clásico experto
  37. 37. archivos de configuraciónYAML XML PHP
  38. 38. plantillasTwig PHP
  39. 39. almacenamientoSQL NoSQL
  40. 40. Configuración PHP XML YAMLPlantillas PHP TwigAlmacenamiento SQL NoSQLFlujo de trabajo Anotaciones Archivos
  41. 41. 1 2 3 4 5 6 7 8 9 10 Rendimiento
  42. 42. « La gran obsesión de Symfony2 »
  43. 43. 5.3.2
  44. 44. archivos de configuración PHP YAML XML
  45. 45. todo se transforma a PHPPHP Caché YAML XML
  46. 46. PHP CachéTwig anotaciones YAML XML
  47. 47. Aplicación BD
  48. 48. Aplicación BD
  49. 49. Aplicación BD
  50. 50. Aplicación BD
  51. 51. Reverse Proxy Aplicación BD
  52. 52. Reverse Proxy Aplicación BD
  53. 53. 1 2 3 4 5 6 7 8 9 10 Soporte
  54. 54. 1.x Feb. Dic. Dic. Nov. 2007 2008 2009 2012 1.0 1.2 1.4 1.4.x2.x Jul. 2011 Jun. 2016 2.0 2.x
  55. 55. hace 5 años no existía
  56. 56. 1 2 3 4 5 6 7 8 9 10Documentación
  57. 57. 10 libros 8 idiomas 15.000 págs.
  58. 58. The TheBook Cookook~ 200 págs. +50 recetasReference APIcientos de opciones cientos dede configuración métodos
  59. 59. 1 2 3 4 5 6 7 8 9 10 Comunidad
  60. 60. +200
  61. 61. +20061 43 170 32 Fuente: Github & andrewnacin.com
  62. 62. Doctrine Behat Imagine SilexAssetic PropelSwiftMailer Twig
  63. 63. Kris Jonathan Sebastian Wallsmith H. Wage Bergmann Nils François ThibaultAdermann Zaninotto Duplessis Bulat Benjamin Konstantin Shakirzyanov Eberlei Kudryashov Lukas Ryan Bernhard K. Smith Weaver Schussek
  64. 64. siwapp.org
  65. 65. diem-project.org apostrophenow.org
  66. 66. phpbb.com
  67. 67. 1 2 3 4 5 6 7 8 9 10 Visionario
  68. 68. Fabien Potencier Fundador y responsable delproyecto Symfony Foto: Guillaume Ponçon
  69. 69. Symfony 1 requerirá como mínimo PHP 5.2.4 Fabien Potencier Octubre 2005
  70. 70. Doctrine 2.0 es una de lasmejores cosas que le han pasado a PHP Fabien Potencier Octubre 2009
  71. 71. Symfony2 tendrá uncontenedor de Inyecciónde Dependencias basado en Spring Fabien Potencier Septiembre 2008
  72. 72. Twig será el formato pordefecto de las plantillas de Symfony2 Fabien Potencier Septiembre 2010
  73. 73. 1 2 3 4 5 6 7 8 9 10 Popular
  74. 74. #1 para programadores Fuente: Github
  75. 75. páginas vistas500000375000250000125000 0
  76. 76. watchers300022501500 750 0
  77. 77. forks700525350175 0
  78. 78. pull requests15001125 750 375 0
  79. 79. #1 para el público en general Fuente: Google Trends
  80. 80. popularidad España, 2011 0 0,25 0,5 0,75 1 Fuente: Google Trends
  81. 81. #1 Argentina #1 Colombia #1 Chile #1 Cuba #1 Mexico #1 Perú #1 UruguayFuente: Google Trends & Alexa #1 Venezuela
  82. 82. #1 en ofertas de trabajo Fuente: Infojobs
  83. 83. #1Fuente: deSymfony
  84. 84. Symfony2 es1. versátil 2. útil3. buenas prácticas 4. flexible5. rendimiento 6. soporte7. documentación 8. comunidad9. visionario 10. popular
  85. 85. contactojavier.eguiluz@gmail.comtwitter.com/javiereguiluzlinkedin.com/in/javiereguiluz

×