SlideShare ist ein Scribd-Unternehmen logo
1 von 33
Downloaden Sie, um offline zu lesen
SYMFONY 2

                                velocidad 2




jueves 15 de diciembre de 11
Quien soy

                                       Marcos Quesada

                                  Desarrollador en Runroom

                                 Certificación ZEND PHP 5.3

                               Just a professional web searcher!


                                marcos.quesadas@gmail.com
                                    @marcos_quesada




jueves 15 de diciembre de 11
¿Que es Symfony?

               First, Symfony2 is a reusable set of standalone, decoupled, and
                  cohesive PHP components that solve common web
                  development problems.


               Then, based on these components, Symfony2 is also a full-stack
                 web framework.


                               Velocidad de desarrollo & Performance




jueves 15 de diciembre de 11
Objetivos


                No inventar la rueda
                Ruby on Rails , Django , Spring... development
                 style
                Monkeycode
                Reutilización del código




jueves 15 de diciembre de 11
Open Source

     + Community:“people that are part of a larger ecosystem that makes
       Symfony better”


     - Symfony 2.0 RC August 2011


     - Symfony 2.0.6 : Bug solved! (hack suplantación de usuario)




jueves 15 de diciembre de 11
Componentes




jueves 15 de diciembre de 11
Performance
     Symfony 2 es:
          - 2 veces mas rápido que symfony 1.4
                 10
          - 3.5 veces mas rápido Zend Framework 1.11
     Como consigue ser tan rápido?
          -PHP 5.3.2
          -APC : precompilado bytecoding
          -Lazy Loading
     Cache Interna:
         archivos de configuración, templates ... todo se cachea en PHP




jueves 15 de diciembre de 11
HTTP CACHE
    -implementa HTTP 1.1 + ESI
          -ESI: simular la comunicacion proxy_cache => http_server
                    -<esi:include src="http:// ….
          -$this>render('NoticiasBundle:Default:destacadas.html.twig',
                                                    array('noticias' => $noticias),
                                                    array('standalone' => true)
                               );
    -Symfony lo lleva integrado
          -Proxy cache externo (Varnish , Squid)




jueves 15 de diciembre de 11
Rendimiento




jueves 15 de diciembre de 11
Doctrine 2




               Presentación Nacho Martin Doctrine: http://es.scribd.com/doc/34058712/Doctrine

jueves 15 de diciembre de 11
Request flow




jueves 15 de diciembre de 11
Empezando

                              deps & deps.lock
                              parameters.ini
                              appKernel
                              autoload




jueves 15 de diciembre de 11
Bundles
                Paquete con una estructura definida, que puede
                 contener cualquier cosa para implementar una
                 funcionalidad
                Reutilización de código
                Paquetes de terceros
                php app/console generate:bundle




jueves 15 de diciembre de 11
Modelo
                Metadatos al poder!
                Entidades
                Repositories
                DataFixtures


        Flujo de trabajo : manos a la obra!




jueves 15 de diciembre de 11
Controllers


               Actions
               php app/console doctrine:generate:crud
               php app/console router:debug
               Routing.yml




jueves 15 de diciembre de 11
Forms
                Object Oriented Forms
                Validación por metadatos $form->isValid()




jueves 15 de diciembre de 11
TWIG
                Templates implementadas con el patron decorator
                 El patrón padre deja huecos para que sean
                 rellenados por sus hijos
                Simular al lenguaje de templates de Django
                la primera vez que se ejecuta se cache en php ,
                 mejora su rendimiento




jueves 15 de diciembre de 11
TWIG

             {% for user in users %}
               <li>{{ user.username }}</li>
             {% else %}
                   <li>No users found</li>
             {% endfor %}




jueves 15 de diciembre de 11
TWIG
{% for elem in arrMenu %}
{% set classes = ["topmenu-button"] %}
{% if loop.first %}{% set classes = classes|merge(["first"]) %}{% endif %}
{% if loop.last %}{% set classes = classes|merge(["last"]) %}{% endif %}
<div class="{{ classes | join(" ") }}">
   <a href="{{ elem.url }}">{{ elem.name }}</a>
</div>
{% endfor %}




jueves 15 de diciembre de 11
TWIG
        Formateadores:
        {{ entity.publishedat | localeDate('{{app.request.session.locale}}',
             'full') }}


        {{ entity.publishedat | date('Y-m-d H:i:s') }}


        Variables en plantilla:
        {% set pointer = 0 %}




jueves 15 de diciembre de 11
ASSETIC

                       php app/console assets:install --symlink web/
                       Plugins:
                                  Coffee Script
                                  LESS
                                  JSMin
                                  YUI
                                  OptiPNG




jueves 15 de diciembre de 11
Assetic + YUI Compressor
        Config.yml




jueves 15 de diciembre de 11
Assetic + YUI Compressor
          layout.html.twig




jueves 15 de diciembre de 11
Dependence Injection

                        Clave de Symfony 2
                        Reutilización de código
                        Flexibilidad
                        services & containers
                        inyección de servicios en servicios
                        php app/console container:debug




jueves 15 de diciembre de 11
Dependence Injection
         Desacoplar IndexController de Controller
          use SymfonyBundleFrameworkBundleControllerController;
          use SymfonyComponentDependencyInjectionContainerAware;


         de: $em = $this->getDoctrine()->getEntityManager();
         a: $em = $this->get('doctrine')->getEntityManager();


         de: return $this->render(
         a:       return $this->container->get('templating')->renderResponse(


      http://miller.limethinking.co.uk/2011/06/14/symfony2-moving-away-from-the-base-controller/


jueves 15 de diciembre de 11
Controller as a Service




jueves 15 de diciembre de 11
Ejemplo de desarrollo

                PaginatorBundle
                              Cortar Slices de un fetchAll
                                     N items
                                     Offset
                              Renderizar el paginador
                                     Widget html




jueves 15 de diciembre de 11
Resultado
                Accediendo al helper paginator:
        $myPaginator = $this->get('paginator.service');

                Renderizado del paginador
              <div class="paginator">
                {{ paginator() | raw}}
              </div>



jueves 15 de diciembre de 11
Test Unitarios
                 phpunit -c app/

                $request = $client->getRequest();
                $container = $client->getContainer();
                $crawler = $client->getCrawler();




                               http://symfony.com/doc/2.0/book/testing.html

jueves 15 de diciembre de 11
Sismo Bundle




jueves 15 de diciembre de 11
+ Bundles

                              FOS User
                              Sonata Admin
                              Sonata Page
                              Sonata User
                              LadyBug




jueves 15 de diciembre de 11
Referencias

            Symfony.com
            http://www.symfony.es/2011/12/02/sf2vigo-optimizacion-y-rendimiento/
            http://es.scribd.com/doc/34058712/Doctrine
            http://www.slideshare.net/raulfraile/symfony2-framework-para-php5?
             from=ss_embed
            http://miller.limethinking.co.uk/2011/06/14/symfony2-moving-away-from-the-
             base-controller/
            http://www.slideshare.net/javier.eguiluz/desymfony-2011-twig




jueves 15 de diciembre de 11
Gracias!!


                               marcos.quesadas@gmail.com
                                   @marcos_quesada




jueves 15 de diciembre de 11

Weitere ähnliche Inhalte

Was ist angesagt?

Despliegue de aplicaciones PHP
Despliegue de aplicaciones PHPDespliegue de aplicaciones PHP
Despliegue de aplicaciones PHP
AlicantePHP
 
Introduccion A Php
Introduccion A PhpIntroduccion A Php
Introduccion A Php
uts
 
Curso Avanzado PHP para EHU/UPV
Curso Avanzado PHP para EHU/UPVCurso Avanzado PHP para EHU/UPV
Curso Avanzado PHP para EHU/UPV
Irontec
 

Was ist angesagt? (18)

Desarrollo de aplicaciones web con PHP y symfony
Desarrollo de aplicaciones web con PHP y symfonyDesarrollo de aplicaciones web con PHP y symfony
Desarrollo de aplicaciones web con PHP y symfony
 
Mi primer programa en Symfony2
Mi primer programa en Symfony2Mi primer programa en Symfony2
Mi primer programa en Symfony2
 
Clase 3 instalación y primeros pasos
Clase 3 instalación y primeros pasosClase 3 instalación y primeros pasos
Clase 3 instalación y primeros pasos
 
Despliegue de aplicaciones PHP
Despliegue de aplicaciones PHPDespliegue de aplicaciones PHP
Despliegue de aplicaciones PHP
 
Desarrollo Web Ágil con Symfony, Bootstrap y Angular
Desarrollo Web Ágil con Symfony, Bootstrap y AngularDesarrollo Web Ágil con Symfony, Bootstrap y Angular
Desarrollo Web Ágil con Symfony, Bootstrap y Angular
 
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
 
Introduccion A Php
Introduccion A PhpIntroduccion A Php
Introduccion A Php
 
Curso Avanzado PHP para EHU/UPV
Curso Avanzado PHP para EHU/UPVCurso Avanzado PHP para EHU/UPV
Curso Avanzado PHP para EHU/UPV
 
(Desarrollo web).manual.php.5
(Desarrollo web).manual.php.5(Desarrollo web).manual.php.5
(Desarrollo web).manual.php.5
 
Manual completo-php-5
Manual completo-php-5Manual completo-php-5
Manual completo-php-5
 
CRUD básico con Symfony
CRUD básico con SymfonyCRUD básico con Symfony
CRUD básico con Symfony
 
9.laravel
9.laravel9.laravel
9.laravel
 
Framework Laravel
Framework LaravelFramework Laravel
Framework Laravel
 
Symfony2: Interacción con CSS, JS y HTML5
Symfony2: Interacción con CSS, JS y HTML5Symfony2: Interacción con CSS, JS y HTML5
Symfony2: Interacción con CSS, JS y HTML5
 
Introduction grails-es
Introduction grails-esIntroduction grails-es
Introduction grails-es
 
Taller introduccion symfony2
Taller introduccion symfony2Taller introduccion symfony2
Taller introduccion symfony2
 
PHP Avanzado: Patrones de diseño
PHP Avanzado: Patrones de diseñoPHP Avanzado: Patrones de diseño
PHP Avanzado: Patrones de diseño
 
Symfony2: Optimización y rendimiento
Symfony2: Optimización y rendimientoSymfony2: Optimización y rendimiento
Symfony2: Optimización y rendimiento
 

Ähnlich wie Symfony2

Slides components en
Slides components enSlides components en
Slides components en
Javier López
 
Open ERP e-Ghost-03-cursillo e-ghost 2010 - open erp como sw de gestion contable
Open ERP e-Ghost-03-cursillo e-ghost 2010 - open erp como sw de gestion contableOpen ERP e-Ghost-03-cursillo e-ghost 2010 - open erp como sw de gestion contable
Open ERP e-Ghost-03-cursillo e-ghost 2010 - open erp como sw de gestion contable
Open ERP Finanzas
 

Ähnlich wie Symfony2 (20)

Desymfony 2011 - Tutorial #1: Instalacion y primeros pasos
Desymfony 2011 - Tutorial #1: Instalacion y primeros pasosDesymfony 2011 - Tutorial #1: Instalacion y primeros pasos
Desymfony 2011 - Tutorial #1: Instalacion y primeros pasos
 
Desymfony 2011 - Tutorial #5: Backend
Desymfony 2011 - Tutorial #5: BackendDesymfony 2011 - Tutorial #5: Backend
Desymfony 2011 - Tutorial #5: Backend
 
Symfony Parte 2
Symfony Parte 2Symfony Parte 2
Symfony Parte 2
 
Symfony: construyendo aplicaciones web
Symfony: construyendo aplicaciones webSymfony: construyendo aplicaciones web
Symfony: construyendo aplicaciones web
 
Sf2 pr5 mi primer proyecto
Sf2 pr5 mi primer proyectoSf2 pr5 mi primer proyecto
Sf2 pr5 mi primer proyecto
 
Slides components en
Slides components enSlides components en
Slides components en
 
FROM lost to the Docker 2020
FROM lost to the Docker 2020FROM lost to the Docker 2020
FROM lost to the Docker 2020
 
Framework Catalyst
Framework CatalystFramework Catalyst
Framework Catalyst
 
Desplegando Proyectos Symfony2 con Capistrano-Capifony y Git
Desplegando Proyectos Symfony2 con Capistrano-Capifony y GitDesplegando Proyectos Symfony2 con Capistrano-Capifony y Git
Desplegando Proyectos Symfony2 con Capistrano-Capifony y Git
 
Open ERP e-Ghost-03-cursillo e-ghost 2010 - open erp como sw de gestion contable
Open ERP e-Ghost-03-cursillo e-ghost 2010 - open erp como sw de gestion contableOpen ERP e-Ghost-03-cursillo e-ghost 2010 - open erp como sw de gestion contable
Open ERP e-Ghost-03-cursillo e-ghost 2010 - open erp como sw de gestion contable
 
Cursillos e-ghost Septiembre 2010. Open ERP como software de gestión contable
Cursillos e-ghost Septiembre 2010. Open ERP como software de gestión contableCursillos e-ghost Septiembre 2010. Open ERP como software de gestión contable
Cursillos e-ghost Septiembre 2010. Open ERP como software de gestión contable
 
Breve introducción práctica al DevOps - (es) 2021_03_18
Breve introducción práctica al DevOps -  (es) 2021_03_18Breve introducción práctica al DevOps -  (es) 2021_03_18
Breve introducción práctica al DevOps - (es) 2021_03_18
 
FROM lost to the docker
FROM lost to the dockerFROM lost to the docker
FROM lost to the docker
 
Presentacion web2py
Presentacion web2pyPresentacion web2py
Presentacion web2py
 
Elementos sobre Symfony 2.1
Elementos sobre Symfony 2.1Elementos sobre Symfony 2.1
Elementos sobre Symfony 2.1
 
Windows 10: Novedades en XAML
Windows 10: Novedades en XAMLWindows 10: Novedades en XAML
Windows 10: Novedades en XAML
 
Drupal8&symfony
Drupal8&symfonyDrupal8&symfony
Drupal8&symfony
 
Docker y PostgreSQL
Docker y PostgreSQLDocker y PostgreSQL
Docker y PostgreSQL
 
Por qué Symfony2 es tan rápido
Por qué Symfony2 es tan rápidoPor qué Symfony2 es tan rápido
Por qué Symfony2 es tan rápido
 
Gestionando servidores con Puppet
Gestionando servidores con PuppetGestionando servidores con Puppet
Gestionando servidores con Puppet
 

Mehr von betabeers

Mehr von betabeers (20)

IONIC, el framework para crear aplicaciones híbridas multiplataforma
IONIC, el framework para crear aplicaciones híbridas multiplataformaIONIC, el framework para crear aplicaciones híbridas multiplataforma
IONIC, el framework para crear aplicaciones híbridas multiplataforma
 
Servicios de Gestión de Datos en la Nube - Jaime Balañá (NetApp)
Servicios de Gestión de Datos en la Nube - Jaime Balañá (NetApp)Servicios de Gestión de Datos en la Nube - Jaime Balañá (NetApp)
Servicios de Gestión de Datos en la Nube - Jaime Balañá (NetApp)
 
Blockchain: la revolución industrial de internet - Oscar Lage
Blockchain: la revolución industrial de internet - Oscar LageBlockchain: la revolución industrial de internet - Oscar Lage
Blockchain: la revolución industrial de internet - Oscar Lage
 
Cloud Learning: la formación del siglo XXI - Mónica Mediavilla
Cloud Learning: la formación del siglo XXI - Mónica MediavillaCloud Learning: la formación del siglo XXI - Mónica Mediavilla
Cloud Learning: la formación del siglo XXI - Mónica Mediavilla
 
Desarrollo web en Nodejs con Pillars por Chelo Quilón
Desarrollo web en Nodejs con Pillars por Chelo QuilónDesarrollo web en Nodejs con Pillars por Chelo Quilón
Desarrollo web en Nodejs con Pillars por Chelo Quilón
 
La línea recta hacia el éxito - Jon Torrado - Betabeers Bilbao
La línea recta hacia el éxito -  Jon Torrado - Betabeers BilbaoLa línea recta hacia el éxito -  Jon Torrado - Betabeers Bilbao
La línea recta hacia el éxito - Jon Torrado - Betabeers Bilbao
 
6 errores a evitar si eres una startup móvil y quieres evolucionar tu app
6 errores a evitar si eres una startup móvil y quieres evolucionar tu app6 errores a evitar si eres una startup móvil y quieres evolucionar tu app
6 errores a evitar si eres una startup móvil y quieres evolucionar tu app
 
Dev ops.continuous delivery - Ibon Landa (Plain Concepts)
Dev ops.continuous delivery - Ibon Landa (Plain Concepts)Dev ops.continuous delivery - Ibon Landa (Plain Concepts)
Dev ops.continuous delivery - Ibon Landa (Plain Concepts)
 
Introducción a scrum - Rodrigo Corral (Plain Concepts)
Introducción a scrum - Rodrigo Corral (Plain Concepts)Introducción a scrum - Rodrigo Corral (Plain Concepts)
Introducción a scrum - Rodrigo Corral (Plain Concepts)
 
Gestión de proyectos y consorcios internacionales - Iñigo Cañadas (GFI)
Gestión de proyectos y consorcios internacionales - Iñigo Cañadas (GFI)Gestión de proyectos y consorcios internacionales - Iñigo Cañadas (GFI)
Gestión de proyectos y consorcios internacionales - Iñigo Cañadas (GFI)
 
Software de gestión Open Source - Odoo - Bakartxo Aristegi (Aizean)
Software de gestión Open Source - Odoo - Bakartxo Aristegi (Aizean)Software de gestión Open Source - Odoo - Bakartxo Aristegi (Aizean)
Software de gestión Open Source - Odoo - Bakartxo Aristegi (Aizean)
 
Elemental, querido Watson - Caso de Uso
Elemental, querido Watson - Caso de UsoElemental, querido Watson - Caso de Uso
Elemental, querido Watson - Caso de Uso
 
Seguridad en tu startup
Seguridad en tu startupSeguridad en tu startup
Seguridad en tu startup
 
Spark Java: Aplicaciones web ligeras y rápidas con Java, por Fran Paredes.
Spark Java: Aplicaciones web ligeras y rápidas con Java, por Fran Paredes.Spark Java: Aplicaciones web ligeras y rápidas con Java, por Fran Paredes.
Spark Java: Aplicaciones web ligeras y rápidas con Java, por Fran Paredes.
 
Buenas prácticas para la optimización web
Buenas prácticas para la optimización webBuenas prácticas para la optimización web
Buenas prácticas para la optimización web
 
La magia de Scrum
La magia de ScrumLa magia de Scrum
La magia de Scrum
 
Programador++ por @wottam
Programador++ por @wottamProgramador++ por @wottam
Programador++ por @wottam
 
RaspberryPi: Tu dispositivo para IoT
RaspberryPi: Tu dispositivo para IoTRaspberryPi: Tu dispositivo para IoT
RaspberryPi: Tu dispositivo para IoT
 
Introducción al Big Data - Xabier Tranche - VIII Betabeers Bilbao 27/02/2015
 Introducción al Big Data - Xabier Tranche  - VIII Betabeers Bilbao 27/02/2015 Introducción al Big Data - Xabier Tranche  - VIII Betabeers Bilbao 27/02/2015
Introducción al Big Data - Xabier Tranche - VIII Betabeers Bilbao 27/02/2015
 
PAYTPV Plataforma Integral de Cobros - VIII Betabeers Bilbao 27/02/2015
PAYTPV Plataforma Integral de Cobros - VIII Betabeers Bilbao 27/02/2015PAYTPV Plataforma Integral de Cobros - VIII Betabeers Bilbao 27/02/2015
PAYTPV Plataforma Integral de Cobros - VIII Betabeers Bilbao 27/02/2015
 

Symfony2

  • 1. SYMFONY 2 velocidad 2 jueves 15 de diciembre de 11
  • 2. Quien soy Marcos Quesada Desarrollador en Runroom Certificación ZEND PHP 5.3 Just a professional web searcher! marcos.quesadas@gmail.com @marcos_quesada jueves 15 de diciembre de 11
  • 3. ¿Que es Symfony? First, Symfony2 is a reusable set of standalone, decoupled, and cohesive PHP components that solve common web development problems. Then, based on these components, Symfony2 is also a full-stack web framework. Velocidad de desarrollo & Performance jueves 15 de diciembre de 11
  • 4. Objetivos  No inventar la rueda  Ruby on Rails , Django , Spring... development style  Monkeycode  Reutilización del código jueves 15 de diciembre de 11
  • 5. Open Source + Community:“people that are part of a larger ecosystem that makes Symfony better” - Symfony 2.0 RC August 2011 - Symfony 2.0.6 : Bug solved! (hack suplantación de usuario) jueves 15 de diciembre de 11
  • 6. Componentes jueves 15 de diciembre de 11
  • 7. Performance Symfony 2 es: - 2 veces mas rápido que symfony 1.4 10 - 3.5 veces mas rápido Zend Framework 1.11 Como consigue ser tan rápido? -PHP 5.3.2 -APC : precompilado bytecoding -Lazy Loading Cache Interna: archivos de configuración, templates ... todo se cachea en PHP jueves 15 de diciembre de 11
  • 8. HTTP CACHE -implementa HTTP 1.1 + ESI -ESI: simular la comunicacion proxy_cache => http_server -<esi:include src="http:// …. -$this>render('NoticiasBundle:Default:destacadas.html.twig', array('noticias' => $noticias), array('standalone' => true) ); -Symfony lo lleva integrado -Proxy cache externo (Varnish , Squid) jueves 15 de diciembre de 11
  • 9. Rendimiento jueves 15 de diciembre de 11
  • 10. Doctrine 2 Presentación Nacho Martin Doctrine: http://es.scribd.com/doc/34058712/Doctrine jueves 15 de diciembre de 11
  • 11. Request flow jueves 15 de diciembre de 11
  • 12. Empezando  deps & deps.lock  parameters.ini  appKernel  autoload jueves 15 de diciembre de 11
  • 13. Bundles  Paquete con una estructura definida, que puede contener cualquier cosa para implementar una funcionalidad  Reutilización de código  Paquetes de terceros  php app/console generate:bundle jueves 15 de diciembre de 11
  • 14. Modelo  Metadatos al poder!  Entidades  Repositories  DataFixtures Flujo de trabajo : manos a la obra! jueves 15 de diciembre de 11
  • 15. Controllers  Actions  php app/console doctrine:generate:crud  php app/console router:debug  Routing.yml jueves 15 de diciembre de 11
  • 16. Forms  Object Oriented Forms  Validación por metadatos $form->isValid() jueves 15 de diciembre de 11
  • 17. TWIG  Templates implementadas con el patron decorator El patrón padre deja huecos para que sean rellenados por sus hijos  Simular al lenguaje de templates de Django  la primera vez que se ejecuta se cache en php , mejora su rendimiento jueves 15 de diciembre de 11
  • 18. TWIG {% for user in users %} <li>{{ user.username }}</li> {% else %} <li>No users found</li> {% endfor %} jueves 15 de diciembre de 11
  • 19. TWIG {% for elem in arrMenu %} {% set classes = ["topmenu-button"] %} {% if loop.first %}{% set classes = classes|merge(["first"]) %}{% endif %} {% if loop.last %}{% set classes = classes|merge(["last"]) %}{% endif %} <div class="{{ classes | join(" ") }}"> <a href="{{ elem.url }}">{{ elem.name }}</a> </div> {% endfor %} jueves 15 de diciembre de 11
  • 20. TWIG Formateadores: {{ entity.publishedat | localeDate('{{app.request.session.locale}}', 'full') }} {{ entity.publishedat | date('Y-m-d H:i:s') }} Variables en plantilla: {% set pointer = 0 %} jueves 15 de diciembre de 11
  • 21. ASSETIC  php app/console assets:install --symlink web/  Plugins:  Coffee Script  LESS  JSMin  YUI  OptiPNG jueves 15 de diciembre de 11
  • 22. Assetic + YUI Compressor Config.yml jueves 15 de diciembre de 11
  • 23. Assetic + YUI Compressor layout.html.twig jueves 15 de diciembre de 11
  • 24. Dependence Injection  Clave de Symfony 2  Reutilización de código  Flexibilidad  services & containers  inyección de servicios en servicios  php app/console container:debug jueves 15 de diciembre de 11
  • 25. Dependence Injection Desacoplar IndexController de Controller use SymfonyBundleFrameworkBundleControllerController; use SymfonyComponentDependencyInjectionContainerAware; de: $em = $this->getDoctrine()->getEntityManager(); a: $em = $this->get('doctrine')->getEntityManager(); de: return $this->render( a: return $this->container->get('templating')->renderResponse( http://miller.limethinking.co.uk/2011/06/14/symfony2-moving-away-from-the-base-controller/ jueves 15 de diciembre de 11
  • 26. Controller as a Service jueves 15 de diciembre de 11
  • 27. Ejemplo de desarrollo  PaginatorBundle  Cortar Slices de un fetchAll  N items  Offset  Renderizar el paginador  Widget html jueves 15 de diciembre de 11
  • 28. Resultado  Accediendo al helper paginator: $myPaginator = $this->get('paginator.service');  Renderizado del paginador <div class="paginator"> {{ paginator() | raw}} </div> jueves 15 de diciembre de 11
  • 29. Test Unitarios  phpunit -c app/  $request = $client->getRequest();  $container = $client->getContainer();  $crawler = $client->getCrawler(); http://symfony.com/doc/2.0/book/testing.html jueves 15 de diciembre de 11
  • 30. Sismo Bundle jueves 15 de diciembre de 11
  • 31. + Bundles  FOS User  Sonata Admin  Sonata Page  Sonata User  LadyBug jueves 15 de diciembre de 11
  • 32. Referencias  Symfony.com  http://www.symfony.es/2011/12/02/sf2vigo-optimizacion-y-rendimiento/  http://es.scribd.com/doc/34058712/Doctrine  http://www.slideshare.net/raulfraile/symfony2-framework-para-php5? from=ss_embed  http://miller.limethinking.co.uk/2011/06/14/symfony2-moving-away-from-the- base-controller/  http://www.slideshare.net/javier.eguiluz/desymfony-2011-twig jueves 15 de diciembre de 11
  • 33. Gracias!! marcos.quesadas@gmail.com @marcos_quesada jueves 15 de diciembre de 11