SlideShare una empresa de Scribd logo
1 de 90
Descargar para leer sin conexión
Introducción a Symfony2
Javier Eguiluz



JORNADAS SYMFONY 2011 1-3 JULIO, CASTELLÓN DESYMFONY.COM
Patrocinadores   Patrocinadores   Patrocinadores
Colaboradores      BRONCE            PLATA        PLATINO y ORO    JORNADAS SYMFONY 2011 están patrocinadas por
importante
Algunas partes de esta presentación
no se pueden entender bien sin ver
el vídeo de su impartición.

Puedes acceder al vídeo en
http://bit.ly/sf-tutorial1
« framework PHP »
1 2 3 4 5 6 7 8 9 10



     Versátil
full!stack
framework
full!stack   components
framework     framework
full!stack   components    micro



                          !
framework     framework   framework
full!stack   components    micro



                          !
framework     framework   framework
BrowserKit        EventDispatcher    Routing      Proyecto
                                                  Symfony
ClassLoader             Finder       Security

  Config                 Form       Serializer
                                                  21
  Console         HttpFoundation    Templating
                                                  librerías
CssSelector           HttpKernel    Translation

DependencyInjection     Locale       Validator

DomCrawler              Process        Yaml
BrowserKit    EventDispatcher       Routing

  ClassLoader             Finder      Security

    Config                Form       Serializer

   Console      HttpFoundation       Templating

  CssSelector           HttpKernel   Translation

  DependencyInjection      Locale     Validator

  DomCrawler             Process        Yaml


componentes
BrowserKit    EventDispatcher       Routing

  ClassLoader             Finder      Security

    Config                Form       Serializer

   Console      HttpFoundation       Templating

  CssSelector           HttpKernel   Translation
                                                   Assetic        Monolog
  DependencyInjection      Locale     Validator

  DomCrawler             Process        Yaml       Doctrine     SwiftMailer

componentes                                                   librerías externas
BrowserKit    EventDispatcher       Routing

  ClassLoader             Finder      Security

    Config                Form       Serializer

   Console      HttpFoundation       Templating

  CssSelector           HttpKernel   Translation
                                                   Assetic        Monolog
  DependencyInjection      Locale     Validator

  DomCrawler             Process        Yaml       Doctrine     SwiftMailer

componentes                                                   librerías externas


 SecurityBundle            DoctrineBundle FrameworkBundle        +6 Bundles

                                                                       bundles
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     SwiftMailer

componentes                                                   librerías externas


 SecurityBundle            DoctrineBundle FrameworkBundle        +6 Bundles

                                                                       bundles
BrowserKit    EventDispatcher    Routing

  ClassLoader
                                               Framework
                                               Symfony2
                HttpFoundation    Templating

  CssSelector       HttpKernel



  DomCrawler                        Yaml


componentes
BrowserKit    EventDispatcher    Routing     !Framework
  ClassLoader
                                                 Silex
                HttpFoundation    Templating

  CssSelector       HttpKernel



  DomCrawler                        Yaml


componentes


                 1 archivo                     400 KB
1 2 3 4 5 6 7 8 9 10



       Útil
¿ Por qué utilizar un
framework bueno ?
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)
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)
industrialización
1 2 3 4 5 6 7 8 9 10



Buenas prácticas
<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>
<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
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();
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();
ruby script/generate model
  Articulo
  titulo:string body:text
ruby script/generate model
  Articulo
  titulo:string body:text




php app/console doctrine:generate:entity
  MiBundle:Articulo
  "titulo:string(255) body:text"
{% 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 %}

{% 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 %}
Twig




Assetic
Monolog
1 2 3 4 5 6 7 8 9 10



     Flexible
novato   clásico   experto
YAML
novato   clásico   experto
YAML
   XML
novato   clásico   experto
YAML
   XML
   PHP
novato   clásico   experto
archivos de configuración


YAML XML PHP
plantillas




Twig        PHP
almacenamiento




SQL      NoSQL
Configuración       PHP    XML    YAML

Plantillas         PHP   Twig

Almacenamiento     SQL   NoSQL

Flujo de trabajo   Anotaciones Archivos
1 2 3 4 5 6 7 8 9 10



  Rendimiento
« La gran obsesión de
     Symfony2 »
5.3.2
archivos de configuración


 PHP      YAML      XML
todo se transforma a PHP
PHP              Caché




   YAML XML
PHP           Caché




Twig              anotaciones


       YAML XML
Aplicación




   BD
Aplicación




   BD
Aplicación




   BD
Aplicación




   BD
Reverse Proxy



         Aplicación




                BD
Reverse Proxy



         Aplicación




                BD
1 2 3 4 5 6 7 8 9 10



     Soporte
1.x
        Feb.    Dic.     Dic.      Nov.
        2007    2008     2009      2012


      1.0      1.2     1.4      1.4.x

2.x     Jul.
        2011
                                   Jun.
                                   2016


      2.0                       2.x
hace 5 años no existía
1 2 3 4 5 6 7 8 9 10



Documentación
10 libros 8 idiomas 15.000 págs.
The                   The
Book                  Cookook
~ 200 págs.           +50 recetas




Reference             API
cientos de opciones   cientos de
de configuración      métodos
1 2 3 4 5 6 7 8 9 10



   Comunidad
+200
+200
61        43           170              32

     Fuente: Github & andrewnacin.com
Doctrine      Behat
  Imagine        Silex
Assetic Propel
SwiftMailer    Twig
Kris                   Jonathan           Sebastian
        Wallsmith              H. Wage            Bergmann


     Nils              François            Thibault
Adermann               Zaninotto          Duplessis



        Bulat                  Benjamin           Konstantin
        Shakirzyanov           Eberlei            Kudryashov


   Lukas                 Ryan             Bernhard
 K. Smith               Weaver            Schussek
siwapp.org
diem-project.org   apostrophenow.org
phpbb.com
1 2 3 4 5 6 7 8 9 10



   Visionario
Fabien
 Potencier
      Fundador y
  responsable del
proyecto Symfony




                    Foto: Guillaume Ponçon
Symfony 1 requerirá como
   mínimo PHP 5.2.4

            Fabien Potencier
               Octubre 2005
Doctrine 2.0 es una de las
mejores cosas que le han
      pasado a PHP

             Fabien Potencier
                Octubre 2009
Symfony2 tendrá un
contenedor de Inyección
de Dependencias basado
       en Spring
           Fabien Potencier
           Septiembre 2008
Twig será el formato por
defecto de las plantillas de
        Symfony2
              Fabien Potencier
              Septiembre 2010
1 2 3 4 5 6 7 8 9 10



     Popular
#1   para
     programadores

 Fuente: Github
páginas vistas
500000



375000



250000



125000



     0
watchers
3000



2250



1500



 750



   0
forks
700



525



350



175



  0
pull requests
1500



1125



 750



 375



   0
#1    para el público
      en general

 Fuente: Google Trends
popularidad              España, 2011




   0    0,25       0,5         0,75   1



       Fuente: Google Trends
#1 Argentina
                                #1 Colombia
                                #1 Chile
                                #1 Cuba
                                #1 Mexico
                                #1 Perú
                                #1 Uruguay
Fuente: Google Trends & Alexa
                                #1 Venezuela
#1   en ofertas de
     trabajo

 Fuente: Infojobs
#1
Fuente: deSymfony
Symfony2 es
1. versátil           2. útil
3. buenas prácticas   4. flexible
5. rendimiento        6. soporte
7. documentación      8. comunidad
9. visionario         10. popular
contacto
javier.eguiluz@gmail.com
twitter.com/javiereguiluz
linkedin.com/in/javiereguiluz

Más contenido relacionado

La actualidad más candente

Symfony en Drupal 8 - DrupalCamp Spain
Symfony en Drupal 8 - DrupalCamp Spain Symfony en Drupal 8 - DrupalCamp Spain
Symfony en Drupal 8 - DrupalCamp Spain Raul Fraile
 
Clase 2 conceptos fundamentales
Clase 2   conceptos fundamentalesClase 2   conceptos fundamentales
Clase 2 conceptos fundamentaleshydras_cs
 
Introducción al microframework PHP Silex - Sergio Gómez - Betabeers Córdoba 0...
Introducción al microframework PHP Silex - Sergio Gómez - Betabeers Córdoba 0...Introducción al microframework PHP Silex - Sergio Gómez - Betabeers Córdoba 0...
Introducción al microframework PHP Silex - Sergio Gómez - Betabeers Córdoba 0...betabeers
 
Las buenas prácticas oficiales para aplicaciones Symfony
Las buenas prácticas oficiales para aplicaciones SymfonyLas buenas prácticas oficiales para aplicaciones Symfony
Las buenas prácticas oficiales para aplicaciones Symfonysymfony_bcn
 
Cómo crear plugins para Wordpress
Cómo crear plugins para WordpressCómo crear plugins para Wordpress
Cómo crear plugins para Wordpressralcocer
 
Materiales del curso de Symfony2
Materiales del curso de Symfony2Materiales del curso de Symfony2
Materiales del curso de Symfony2Raul Fraile
 
Código mantenible, en Wordpress.
Código mantenible, en Wordpress.Código mantenible, en Wordpress.
Código mantenible, en Wordpress.Asier Marqués
 
Api De Google Calendar
Api De Google CalendarApi De Google Calendar
Api De Google Calendarjvelizster
 
Symfony2: Framework para PHP5
Symfony2: Framework para PHP5Symfony2: Framework para PHP5
Symfony2: Framework para PHP5Raul Fraile
 
Introducción a PHP - Programador PHP - UGR
Introducción a PHP - Programador PHP - UGRIntroducción a PHP - Programador PHP - UGR
Introducción a PHP - Programador PHP - UGRJuan Belón Pérez
 
Mi primer programa en Symfony2
Mi primer programa en Symfony2Mi primer programa en Symfony2
Mi primer programa en Symfony2César Hernández
 
Introducción a recaptcha 3.0
Introducción a recaptcha 3.0Introducción a recaptcha 3.0
Introducción a recaptcha 3.0Jesús Ayús
 
Clase 5 controller
Clase 5 controllerClase 5 controller
Clase 5 controllerhydras_cs
 
Integrando React.js en aplicaciones Symfony (deSymfony 2016)
Integrando React.js en aplicaciones Symfony (deSymfony 2016)Integrando React.js en aplicaciones Symfony (deSymfony 2016)
Integrando React.js en aplicaciones Symfony (deSymfony 2016)Ignacio Martín
 
Slides components en
Slides components enSlides components en
Slides components enJavier López
 

La actualidad más candente (20)

Backend (sf2Vigo)
Backend (sf2Vigo)Backend (sf2Vigo)
Backend (sf2Vigo)
 
Symfony en Drupal 8 - DrupalCamp Spain
Symfony en Drupal 8 - DrupalCamp Spain Symfony en Drupal 8 - DrupalCamp Spain
Symfony en Drupal 8 - DrupalCamp Spain
 
Clase 2 conceptos fundamentales
Clase 2   conceptos fundamentalesClase 2   conceptos fundamentales
Clase 2 conceptos fundamentales
 
Introducción al microframework PHP Silex - Sergio Gómez - Betabeers Córdoba 0...
Introducción al microframework PHP Silex - Sergio Gómez - Betabeers Córdoba 0...Introducción al microframework PHP Silex - Sergio Gómez - Betabeers Córdoba 0...
Introducción al microframework PHP Silex - Sergio Gómez - Betabeers Córdoba 0...
 
Las buenas prácticas oficiales para aplicaciones Symfony
Las buenas prácticas oficiales para aplicaciones SymfonyLas buenas prácticas oficiales para aplicaciones Symfony
Las buenas prácticas oficiales para aplicaciones Symfony
 
Composer: Gestionando dependencias en PHP
Composer: Gestionando dependencias en PHP Composer: Gestionando dependencias en PHP
Composer: Gestionando dependencias en PHP
 
CRUD básico con Symfony
CRUD básico con SymfonyCRUD básico con Symfony
CRUD básico con Symfony
 
Cómo crear plugins para Wordpress
Cómo crear plugins para WordpressCómo crear plugins para Wordpress
Cómo crear plugins para Wordpress
 
Materiales del curso de Symfony2
Materiales del curso de Symfony2Materiales del curso de Symfony2
Materiales del curso de Symfony2
 
PHP en el 2015
PHP en el 2015PHP en el 2015
PHP en el 2015
 
Código mantenible, en Wordpress.
Código mantenible, en Wordpress.Código mantenible, en Wordpress.
Código mantenible, en Wordpress.
 
Api De Google Calendar
Api De Google CalendarApi De Google Calendar
Api De Google Calendar
 
Symfony2: Framework para PHP5
Symfony2: Framework para PHP5Symfony2: Framework para PHP5
Symfony2: Framework para PHP5
 
Introducción a PHP - Programador PHP - UGR
Introducción a PHP - Programador PHP - UGRIntroducción a PHP - Programador PHP - UGR
Introducción a PHP - Programador PHP - UGR
 
Mi primer programa en Symfony2
Mi primer programa en Symfony2Mi primer programa en Symfony2
Mi primer programa en Symfony2
 
Introducción a recaptcha 3.0
Introducción a recaptcha 3.0Introducción a recaptcha 3.0
Introducción a recaptcha 3.0
 
Clase 5 controller
Clase 5 controllerClase 5 controller
Clase 5 controller
 
Integrando React.js en aplicaciones Symfony (deSymfony 2016)
Integrando React.js en aplicaciones Symfony (deSymfony 2016)Integrando React.js en aplicaciones Symfony (deSymfony 2016)
Integrando React.js en aplicaciones Symfony (deSymfony 2016)
 
Slides components en
Slides components enSlides components en
Slides components en
 
Php Basico
Php BasicoPhp Basico
Php Basico
 

Similar a Introducción a Symfony2

Symfony2 y su ecosistema
Symfony2 y su ecosistemaSymfony2 y su ecosistema
Symfony2 y su ecosistemajaviacei
 
Symfony-Community: Introducción a Symfony Framework
Symfony-Community: Introducción a Symfony FrameworkSymfony-Community: Introducción a Symfony Framework
Symfony-Community: Introducción a Symfony Frameworkexcedesoft
 
Html5 - El futuro de la web
Html5 - El futuro de la webHtml5 - El futuro de la web
Html5 - El futuro de la webJoan Fernández
 
15a. Reunion de SpringHispano.org y grails.org.mx
15a. Reunion de SpringHispano.org y grails.org.mx15a. Reunion de SpringHispano.org y grails.org.mx
15a. Reunion de SpringHispano.org y grails.org.mxJose Juan R. Zuñiga
 
[Shared] ML Bootcamp - GDG Barcelona - Semana 4.pptx
[Shared] ML Bootcamp - GDG Barcelona - Semana 4.pptx[Shared] ML Bootcamp - GDG Barcelona - Semana 4.pptx
[Shared] ML Bootcamp - GDG Barcelona - Semana 4.pptxGabriela Soto
 
Programacion de aplicaciones Web con ASP.NET
Programacion de aplicaciones Web con ASP.NETProgramacion de aplicaciones Web con ASP.NET
Programacion de aplicaciones Web con ASP.NETJavier Roig
 
Esencia de web components
Esencia de web componentsEsencia de web components
Esencia de web componentsPedro J. Molina
 
Entendiendo Yii - Flisol 2016
Entendiendo Yii - Flisol 2016Entendiendo Yii - Flisol 2016
Entendiendo Yii - Flisol 2016Plattinux
 
Symfony2 un framework para maximizar tu productividad en desarrollo web
Symfony2 un framework para maximizar tu productividad en desarrollo webSymfony2 un framework para maximizar tu productividad en desarrollo web
Symfony2 un framework para maximizar tu productividad en desarrollo webIEBSchool
 
Seguridad en WordPress con WPHardening
Seguridad en WordPress con WPHardeningSeguridad en WordPress con WPHardening
Seguridad en WordPress con WPHardeningDaniel Maldonado
 
Esencia de Web Components
Esencia de Web ComponentsEsencia de Web Components
Esencia de Web ComponentsPedro J. Molina
 
Introducción a Silex. Aprendiendo a hacer las cosas bien en PHP
Introducción a Silex. Aprendiendo a hacer las cosas bien en PHPIntroducción a Silex. Aprendiendo a hacer las cosas bien en PHP
Introducción a Silex. Aprendiendo a hacer las cosas bien en PHPDaniel Primo
 
Zend Framework - MVC - 2008
Zend Framework - MVC - 2008Zend Framework - MVC - 2008
Zend Framework - MVC - 2008Juan Carbajal
 
La Caja de Herramientas del Desarrollador Moderno PHPConferenceAR
La Caja de Herramientas del Desarrollador Moderno PHPConferenceARLa Caja de Herramientas del Desarrollador Moderno PHPConferenceAR
La Caja de Herramientas del Desarrollador Moderno PHPConferenceARPablo Godel
 
Web services GeneXus Tilo
Web services GeneXus TiloWeb services GeneXus Tilo
Web services GeneXus TiloGeneXus
 

Similar a Introducción a Symfony2 (20)

Symfony2 y su ecosistema
Symfony2 y su ecosistemaSymfony2 y su ecosistema
Symfony2 y su ecosistema
 
Presentacion web2py
Presentacion web2pyPresentacion web2py
Presentacion web2py
 
Symfony-Community: Introducción a Symfony Framework
Symfony-Community: Introducción a Symfony FrameworkSymfony-Community: Introducción a Symfony Framework
Symfony-Community: Introducción a Symfony Framework
 
Despliegue de Aplicaciones .Net Core en Docker
Despliegue de Aplicaciones .Net Core en DockerDespliegue de Aplicaciones .Net Core en Docker
Despliegue de Aplicaciones .Net Core en Docker
 
Arquitectura
Arquitectura Arquitectura
Arquitectura
 
Html5 - El futuro de la web
Html5 - El futuro de la webHtml5 - El futuro de la web
Html5 - El futuro de la web
 
HTML5-Aplicaciones web
HTML5-Aplicaciones webHTML5-Aplicaciones web
HTML5-Aplicaciones web
 
Curso introductorio a Raptor.js con Node.js
Curso introductorio a Raptor.js con Node.jsCurso introductorio a Raptor.js con Node.js
Curso introductorio a Raptor.js con Node.js
 
15a. Reunion de SpringHispano.org y grails.org.mx
15a. Reunion de SpringHispano.org y grails.org.mx15a. Reunion de SpringHispano.org y grails.org.mx
15a. Reunion de SpringHispano.org y grails.org.mx
 
[Shared] ML Bootcamp - GDG Barcelona - Semana 4.pptx
[Shared] ML Bootcamp - GDG Barcelona - Semana 4.pptx[Shared] ML Bootcamp - GDG Barcelona - Semana 4.pptx
[Shared] ML Bootcamp - GDG Barcelona - Semana 4.pptx
 
Programacion de aplicaciones Web con ASP.NET
Programacion de aplicaciones Web con ASP.NETProgramacion de aplicaciones Web con ASP.NET
Programacion de aplicaciones Web con ASP.NET
 
Esencia de web components
Esencia de web componentsEsencia de web components
Esencia de web components
 
Entendiendo Yii - Flisol 2016
Entendiendo Yii - Flisol 2016Entendiendo Yii - Flisol 2016
Entendiendo Yii - Flisol 2016
 
Symfony2 un framework para maximizar tu productividad en desarrollo web
Symfony2 un framework para maximizar tu productividad en desarrollo webSymfony2 un framework para maximizar tu productividad en desarrollo web
Symfony2 un framework para maximizar tu productividad en desarrollo web
 
Seguridad en WordPress con WPHardening
Seguridad en WordPress con WPHardeningSeguridad en WordPress con WPHardening
Seguridad en WordPress con WPHardening
 
Esencia de Web Components
Esencia de Web ComponentsEsencia de Web Components
Esencia de Web Components
 
Introducción a Silex. Aprendiendo a hacer las cosas bien en PHP
Introducción a Silex. Aprendiendo a hacer las cosas bien en PHPIntroducción a Silex. Aprendiendo a hacer las cosas bien en PHP
Introducción a Silex. Aprendiendo a hacer las cosas bien en PHP
 
Zend Framework - MVC - 2008
Zend Framework - MVC - 2008Zend Framework - MVC - 2008
Zend Framework - MVC - 2008
 
La Caja de Herramientas del Desarrollador Moderno PHPConferenceAR
La Caja de Herramientas del Desarrollador Moderno PHPConferenceARLa Caja de Herramientas del Desarrollador Moderno PHPConferenceAR
La Caja de Herramientas del Desarrollador Moderno PHPConferenceAR
 
Web services GeneXus Tilo
Web services GeneXus TiloWeb services GeneXus Tilo
Web services GeneXus Tilo
 

Más de Javier Eguiluz

deSymfony 2017: Symfony 4, Symfony Flex y el futuro de Symfony
deSymfony 2017: Symfony 4, Symfony Flex y el futuro de SymfonydeSymfony 2017: Symfony 4, Symfony Flex y el futuro de Symfony
deSymfony 2017: Symfony 4, Symfony Flex y el futuro de SymfonyJavier Eguiluz
 
New Symfony Tips & Tricks (SymfonyCon Paris 2015)
New Symfony Tips & Tricks (SymfonyCon Paris 2015)New Symfony Tips & Tricks (SymfonyCon Paris 2015)
New Symfony Tips & Tricks (SymfonyCon Paris 2015)Javier Eguiluz
 
Mastering Twig (DrupalCon Barcelona 2015)
Mastering Twig (DrupalCon Barcelona 2015)Mastering Twig (DrupalCon Barcelona 2015)
Mastering Twig (DrupalCon Barcelona 2015)Javier Eguiluz
 
Symfony tips and tricks
Symfony tips and tricksSymfony tips and tricks
Symfony tips and tricksJavier Eguiluz
 
Twig, el nuevo motor de plantillas de Drupal 8
Twig, el nuevo motor de plantillas de Drupal 8Twig, el nuevo motor de plantillas de Drupal 8
Twig, el nuevo motor de plantillas de Drupal 8Javier Eguiluz
 
Twig, los mejores trucos y técnicas avanzadas
Twig, los mejores trucos y técnicas avanzadasTwig, los mejores trucos y técnicas avanzadas
Twig, los mejores trucos y técnicas avanzadasJavier Eguiluz
 
Twig avanzado (sf2Vigo)
Twig avanzado (sf2Vigo)Twig avanzado (sf2Vigo)
Twig avanzado (sf2Vigo)Javier Eguiluz
 
Desymfony 2012 - Concurso de diseño
Desymfony 2012 - Concurso de diseñoDesymfony 2012 - Concurso de diseño
Desymfony 2012 - Concurso de diseñoJavier Eguiluz
 
Curso Symfony - Anexos
Curso Symfony - AnexosCurso Symfony - Anexos
Curso Symfony - AnexosJavier Eguiluz
 
Curso Symfony - Clase 5
Curso Symfony - Clase 5Curso Symfony - Clase 5
Curso Symfony - Clase 5Javier Eguiluz
 
Curso Symfony - Clase 4
Curso Symfony - Clase 4Curso Symfony - Clase 4
Curso Symfony - Clase 4Javier Eguiluz
 
Curso Symfony - Clase 3
Curso Symfony - Clase 3Curso Symfony - Clase 3
Curso Symfony - Clase 3Javier Eguiluz
 
Curso Symfony - Clase 2
Curso Symfony - Clase 2Curso Symfony - Clase 2
Curso Symfony - Clase 2Javier Eguiluz
 
Curso Symfony - Clase 1
Curso Symfony - Clase 1Curso Symfony - Clase 1
Curso Symfony - Clase 1Javier Eguiluz
 

Más de Javier Eguiluz (17)

deSymfony 2017: Symfony 4, Symfony Flex y el futuro de Symfony
deSymfony 2017: Symfony 4, Symfony Flex y el futuro de SymfonydeSymfony 2017: Symfony 4, Symfony Flex y el futuro de Symfony
deSymfony 2017: Symfony 4, Symfony Flex y el futuro de Symfony
 
New Symfony Tips & Tricks (SymfonyCon Paris 2015)
New Symfony Tips & Tricks (SymfonyCon Paris 2015)New Symfony Tips & Tricks (SymfonyCon Paris 2015)
New Symfony Tips & Tricks (SymfonyCon Paris 2015)
 
Mastering Twig (DrupalCon Barcelona 2015)
Mastering Twig (DrupalCon Barcelona 2015)Mastering Twig (DrupalCon Barcelona 2015)
Mastering Twig (DrupalCon Barcelona 2015)
 
Symfony tips and tricks
Symfony tips and tricksSymfony tips and tricks
Symfony tips and tricks
 
Twig, el nuevo motor de plantillas de Drupal 8
Twig, el nuevo motor de plantillas de Drupal 8Twig, el nuevo motor de plantillas de Drupal 8
Twig, el nuevo motor de plantillas de Drupal 8
 
Silex al límite
Silex al límiteSilex al límite
Silex al límite
 
Twig tips and tricks
Twig tips and tricksTwig tips and tricks
Twig tips and tricks
 
Twig, los mejores trucos y técnicas avanzadas
Twig, los mejores trucos y técnicas avanzadasTwig, los mejores trucos y técnicas avanzadas
Twig, los mejores trucos y técnicas avanzadas
 
Wallpaper Notifier
Wallpaper NotifierWallpaper Notifier
Wallpaper Notifier
 
Twig avanzado (sf2Vigo)
Twig avanzado (sf2Vigo)Twig avanzado (sf2Vigo)
Twig avanzado (sf2Vigo)
 
Desymfony 2012 - Concurso de diseño
Desymfony 2012 - Concurso de diseñoDesymfony 2012 - Concurso de diseño
Desymfony 2012 - Concurso de diseño
 
Curso Symfony - Anexos
Curso Symfony - AnexosCurso Symfony - Anexos
Curso Symfony - Anexos
 
Curso Symfony - Clase 5
Curso Symfony - Clase 5Curso Symfony - Clase 5
Curso Symfony - Clase 5
 
Curso Symfony - Clase 4
Curso Symfony - Clase 4Curso Symfony - Clase 4
Curso Symfony - Clase 4
 
Curso Symfony - Clase 3
Curso Symfony - Clase 3Curso Symfony - Clase 3
Curso Symfony - Clase 3
 
Curso Symfony - Clase 2
Curso Symfony - Clase 2Curso Symfony - Clase 2
Curso Symfony - Clase 2
 
Curso Symfony - Clase 1
Curso Symfony - Clase 1Curso Symfony - Clase 1
Curso Symfony - Clase 1
 

Último

TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptJavierHerrera662252
 
tarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzztarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzzAlexandergo5
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
Presentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia ArtificialPresentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia Artificialcynserafini89
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son241514984
 
Los Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesLos Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesEdomar AR
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxtjcesar1
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMidwarHenryLOZAFLORE
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOnarvaezisabella21
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfjeondanny1997
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúCEFERINO DELGADO FLORES
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfedepmariaperez
 
Excel (1) tecnologia.pdf trabajo Excel taller
Excel  (1) tecnologia.pdf trabajo Excel tallerExcel  (1) tecnologia.pdf trabajo Excel taller
Excel (1) tecnologia.pdf trabajo Excel tallerValentinaTabares11
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxGESTECPERUSAC
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxAlexander López
 

Último (20)

TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
 
tarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzztarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzz
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
Presentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia ArtificialPresentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia Artificial
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son
 
Los Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesLos Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, Aplicaciones
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptx
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdf
 
Excel (1) tecnologia.pdf trabajo Excel taller
Excel  (1) tecnologia.pdf trabajo Excel tallerExcel  (1) tecnologia.pdf trabajo Excel taller
Excel (1) tecnologia.pdf trabajo Excel taller
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptx
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
 

Introducción a Symfony2

  • 1. Introducción a Symfony2 Javier Eguiluz JORNADAS SYMFONY 2011 1-3 JULIO, CASTELLÓN DESYMFONY.COM
  • 2. Patrocinadores Patrocinadores Patrocinadores Colaboradores BRONCE PLATA PLATINO y ORO JORNADAS SYMFONY 2011 están patrocinadas por
  • 3. importante Algunas partes de esta presentación no se pueden entender bien sin ver el vídeo de su impartición. Puedes acceder al vídeo en http://bit.ly/sf-tutorial1
  • 4.
  • 6. 1 2 3 4 5 6 7 8 9 10 Versátil
  • 8. full!stack components framework framework
  • 9. full!stack components micro ! framework framework framework
  • 10. full!stack components micro ! framework framework framework
  • 11. BrowserKit EventDispatcher Routing Proyecto Symfony ClassLoader Finder Security Config Form Serializer 21 Console HttpFoundation Templating librerías CssSelector HttpKernel Translation DependencyInjection Locale Validator DomCrawler Process Yaml
  • 12. BrowserKit EventDispatcher Routing ClassLoader Finder Security Config Form Serializer Console HttpFoundation Templating CssSelector HttpKernel Translation DependencyInjection Locale Validator DomCrawler Process Yaml componentes
  • 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 SwiftMailer componentes librerías externas
  • 14. BrowserKit EventDispatcher Routing ClassLoader Finder Security Config Form Serializer Console HttpFoundation Templating CssSelector HttpKernel Translation Assetic Monolog DependencyInjection Locale Validator DomCrawler Process Yaml Doctrine SwiftMailer componentes librerías externas SecurityBundle DoctrineBundle FrameworkBundle +6 Bundles bundles
  • 15. 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 SwiftMailer componentes librerías externas SecurityBundle DoctrineBundle FrameworkBundle +6 Bundles bundles
  • 16. BrowserKit EventDispatcher Routing ClassLoader Framework Symfony2 HttpFoundation Templating CssSelector HttpKernel DomCrawler Yaml componentes
  • 17. BrowserKit EventDispatcher Routing !Framework ClassLoader Silex HttpFoundation Templating CssSelector HttpKernel DomCrawler Yaml componentes 1 archivo 400 KB
  • 18. 1 2 3 4 5 6 7 8 9 10 Útil
  • 19. ¿ Por qué utilizar un framework bueno ?
  • 20. 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)
  • 21. 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)
  • 23. 1 2 3 4 5 6 7 8 9 10 Buenas prácticas
  • 24.
  • 25. <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>
  • 26. <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
  • 27. 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();
  • 28. 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();
  • 29. ruby script/generate model Articulo titulo:string body:text
  • 30. ruby script/generate model Articulo titulo:string body:text php app/console doctrine:generate:entity MiBundle:Articulo "titulo:string(255) body:text"
  • 31. {% 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 %}
  • 32. {% 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 %}
  • 33.
  • 35. 1 2 3 4 5 6 7 8 9 10 Flexible
  • 36. novato clásico experto
  • 37. YAML novato clásico experto
  • 38. YAML XML novato clásico experto
  • 39. YAML XML PHP novato clásico experto
  • 43. Configuración PHP XML YAML Plantillas PHP Twig Almacenamiento SQL NoSQL Flujo de trabajo Anotaciones Archivos
  • 44. 1 2 3 4 5 6 7 8 9 10 Rendimiento
  • 45. « La gran obsesión de Symfony2 »
  • 46. 5.3.2
  • 48. todo se transforma a PHP PHP Caché YAML XML
  • 49. PHP Caché Twig anotaciones YAML XML
  • 54. Reverse Proxy Aplicación BD
  • 55. Reverse Proxy Aplicación BD
  • 56. 1 2 3 4 5 6 7 8 9 10 Soporte
  • 57.
  • 58. 1.x Feb. Dic. Dic. Nov. 2007 2008 2009 2012 1.0 1.2 1.4 1.4.x 2.x Jul. 2011 Jun. 2016 2.0 2.x
  • 59. hace 5 años no existía
  • 60. 1 2 3 4 5 6 7 8 9 10 Documentación
  • 61.
  • 62. 10 libros 8 idiomas 15.000 págs.
  • 63. The The Book Cookook ~ 200 págs. +50 recetas Reference API cientos de opciones cientos de de configuración métodos
  • 64. 1 2 3 4 5 6 7 8 9 10 Comunidad
  • 65. +200
  • 66. +200 61 43 170 32 Fuente: Github & andrewnacin.com
  • 67. Doctrine Behat Imagine Silex Assetic Propel SwiftMailer Twig
  • 68. Kris Jonathan Sebastian Wallsmith H. Wage Bergmann Nils François Thibault Adermann Zaninotto Duplessis Bulat Benjamin Konstantin Shakirzyanov Eberlei Kudryashov Lukas Ryan Bernhard K. Smith Weaver Schussek
  • 70. diem-project.org apostrophenow.org
  • 72. 1 2 3 4 5 6 7 8 9 10 Visionario
  • 73. Fabien Potencier Fundador y responsable del proyecto Symfony Foto: Guillaume Ponçon
  • 74. Symfony 1 requerirá como mínimo PHP 5.2.4 Fabien Potencier Octubre 2005
  • 75. Doctrine 2.0 es una de las mejores cosas que le han pasado a PHP Fabien Potencier Octubre 2009
  • 76. Symfony2 tendrá un contenedor de Inyección de Dependencias basado en Spring Fabien Potencier Septiembre 2008
  • 77. Twig será el formato por defecto de las plantillas de Symfony2 Fabien Potencier Septiembre 2010
  • 78. 1 2 3 4 5 6 7 8 9 10 Popular
  • 79. #1 para programadores Fuente: Github
  • 84. #1 para el público en general Fuente: Google Trends
  • 85. popularidad España, 2011 0 0,25 0,5 0,75 1 Fuente: Google Trends
  • 86. #1 Argentina #1 Colombia #1 Chile #1 Cuba #1 Mexico #1 Perú #1 Uruguay Fuente: Google Trends & Alexa #1 Venezuela
  • 87. #1 en ofertas de trabajo Fuente: Infojobs
  • 89. Symfony2 es 1. versátil 2. útil 3. buenas prácticas 4. flexible 5. rendimiento 6. soporte 7. documentación 8. comunidad 9. visionario 10. popular