SlideShare uma empresa Scribd logo
1 de 53
Baixar para ler offline
Symfony 2 y su ecosistema

Francisco Javier Aceituno Lapido
fco.javier.aceituno@gmail.com
Francisco Javier Aceituno Lapido

• Ingeniero en Informática (UPM) 2010

• Colaborador en symfony-madrid

• Arquitecto de Software en ideup!

• Amante del mundo PHP y Symfony desde 2008

                                              Symfony 2 y su ecosistema   2
¿ Qué es Symfony 2?




                         8 Bundles

                      Symfony 2 y su ecosistema   3
¿ Qué es Symfony 2?
 ClassLoader          HttpFoundation   Routing        EventDispatcher



DependencyInjection         Console       Config



                                                 22 componentes




                                                                        Symfony 2 y su ecosistema   4
¿ Qué es Symfony 2?
 ClassLoader          HttpFoundation             Routing             EventDispatcher



DependencyInjection         Console                 Config



                                                           22 componentes



  Twig           Doctrine              Monolog             Assetic        SwiftMailer

                            5 Librerías externas

                                                                                        Symfony 2 y su ecosistema   5
¿ Qué es Symfony 2?
 ClassLoader          HttpFoundation             Routing             EventDispatcher     FrameworkBundle


                                                                                         WebProfilerBundle
DependencyInjection         Console                 Config

                                                                                             TwigBundle

                                                           22 componentes
                                                                                           SecurityBundle



  Twig           Doctrine              Monolog             Assetic        SwiftMailer

                            5 Librerías externas                                           8 Bundles

                                                                                        Symfony 2 y su ecosistema   6
¿ Qué es Symfony 2?
 ClassLoader          HttpFoundation             Routing             EventDispatcher     FrameworkBundle


                                                                                         WebProfilerBundle
DependencyInjection         Console                 Config

                                                                                             TwigBundle

                                                           22 componentes
                                                                                           SecurityBundle



  Twig           Doctrine              Monolog             Assetic        SwiftMailer

                            5 Librerías externas                                           8 Bundles

                                                                                        Symfony 2 y su ecosistema   7
ClassLoader
https://github.com/symfony/ClassLoader

Carga automáticamente las clases de tu proyecto si
   – Definición de las clases siguen el estadar PSR-0 (PHP 5.3)
        Codemotion/Model/Task.php  CodemotionModelTask


   – Definición de las clases según el convenio PEAR
        Codemotion/Model/Task.php  Codemotion_Model_Task


                                                              Symfony 2 y su ecosistema   8
HttpFoundation
https://github.com/symfony/HttpFoundation
Define una capa orientada a objetos de la especificación de HTTP




                                                    Symfony 2 y su ecosistema   9
HttpFoundation
https://github.com/symfony/HttpFoundation
Define una capa orientada a objetos de la especificación de HTTP

  Request
      query
     request
     cookies
    attributes
       files
      server
     headers



                                                    Symfony 2 y su ecosistema   10
HttpFoundation
https://github.com/symfony/HttpFoundation
Define una capa orientada a objetos de la especificación de HTTP

  Request
      query      $_GET
     request     $_POST
     cookies      $_GET
                 $_COOKIE
    attributes
       files     $_FILES
      server     $_SERVER
     headers



                                                    Symfony 2 y su ecosistema   11
HttpFoundation
https://github.com/symfony/HttpFoundation
Define una capa orientada a objetos de la especificación de HTTP

  Request
                               all()
      query      $_GET        keys()
     request     $_POST
     cookies      $_GET
                 $_COOKIE
                            replace()
                              add()
    attributes                 get()
       files     $_FILES       set()
      server     $_SERVER     has()
     headers                remove()


                                                    Symfony 2 y su ecosistema   12
HttpFoundation
https://github.com/symfony/HttpFoundation
Define una capa orientada a objetos de la especificación de HTTP

  Request                               Response
                               all()
      query      $_GET        keys()
     request     $_POST
     cookies      $_GET
                 $_COOKIE
                            replace()
                              add()
                                          content
                                           status
    attributes                 get()      headers
       files     $_FILES       set()
      server     $_SERVER     has()
     headers                remove()


                                                    Symfony 2 y su ecosistema   13
HttpFoundation
https://github.com/symfony/HttpFoundation
Define una capa orientada a objetos de la especificación de HTTP
                                                            send()
  Request                               Response           prepare()
                               all()
      query      $_GET        keys()
     request     $_POST
     cookies      $_GET
                 $_COOKIE
                            replace()
                              add()
                                          content   $_GET
                                           status
    attributes                 get()      headers
       files     $_FILES       set()
      server     $_SERVER     has()
     headers                remove()


                                                    Symfony 2 y su ecosistema   14
HttpFoundation
https://github.com/symfony/HttpFoundation
Define una capa orientada a objetos de la especificación de HTTP
                                                            send()
  Request                               Response           prepare()
                               all()
      query      $_GET        keys()                         cache
     request     $_POST
     cookies      $_GET
                 $_COOKIE
                            replace()
                              add()
                                          content   $_GET  setPublic()
                                                          setPrivate()
                                           status
    attributes                 get()      headers            expire)
       files     $_FILES       set()                      setExpires()
      server     $_SERVER     has()                      setMaxAge()
     headers                remove()                   setLastModified()
                                                               …

                                                    Symfony 2 y su ecosistema   15
Routing
https://github.com/symfony/Routing
Mapea una petición HTTP (Request) a un conjunto de variables




                                                  Symfony 2 y su ecosistema   16
Routing
https://github.com/symfony/Routing
Mapea una petición HTTP (Request) a un conjunto de variables
                                   configuración


  app.php/task/list


                          Router



                                                   Symfony 2 y su ecosistema   17
Routing
https://github.com/symfony/Routing
Mapea una petición HTTP (Request) a un conjunto de variables
                                      configuración


  app.php/task/list       task/list


                          Router



                                                      Symfony 2 y su ecosistema   18
Routing
https://github.com/symfony/Routing
Mapea una petición HTTP (Request) a un conjunto de variables
                                      configuración


  app.php/task/list       task/list                   controller: TaskController, action: listAction



                          Router



                                                                         Symfony 2 y su ecosistema     19
Routing
https://github.com/symfony/Routing
Mapea una petición HTTP (Request) a un conjunto de variables
                                      configuración


  app.php/task/list       task/list                   controller: TaskController, action: listAction



                          Router
  app.php/task/1/show




                                                                         Symfony 2 y su ecosistema     20
Routing
https://github.com/symfony/Routing
Mapea una petición HTTP (Request) a un conjunto de variables
                                      configuración


  app.php/task/list       task/list                   controller: TaskController, action: listAction



                          Router
  app.php/task/1/show
                        task/{id}/show


                                                                         Symfony 2 y su ecosistema     21
Routing
https://github.com/symfony/Routing
Mapea una petición HTTP (Request) a un conjunto de variables
                                      configuración


  app.php/task/list       task/list                   controller: TaskController, action: listAction



                          Router                          controller: TaskController, action:
  app.php/task/1/show                                             showAction, id: 1

                        task/{id}/show


                                                                         Symfony 2 y su ecosistema     22
Doctrine 2



Conjunto de librerías PHP que nos proporciona servicios de persistencia




                                                        Symfony 2 y su ecosistema   23
Doctrine 2
https://github.com/doctrine/doctrine2




   Doctrine Common     - Extensiones al core de PHP (Colecciones, Anotaciones, Cache, ...)



                                                                   Symfony 2 y su ecosistema   24
Doctrine 2
https://github.com/doctrine/doctrine2




                       - Manipulación de la estructura de bbdd.
    Doctrine DBAL      - Abstracción del tipo de bbdd (IMBDB2, PDOIbm,
                       PDOMySQL, PDOOracle, PDOSqlite, …).

   Doctrine Common     - Extensiones al core de PHP (Colecciones, Anotaciones, Cache, ...)



                                                                   Symfony 2 y su ecosistema   25
Doctrine 2
https://github.com/doctrine/doctrine2

                       - Ofrece persistencia transparente a los objetos de PHP.
     Doctrine ORM      - Doctrine Query Language (DQL) nos abstrae el mapeo entre las
                       columnas y tablas de la bbdd y los objetos.

                       - Manipulación de la estructura de bbdd.
    Doctrine DBAL      - Abstracción del tipo de bbdd (IMBDB2, PDOIbm,
                       PDOMySQL, PDOOracle, PDOSqlite, …).

   Doctrine Common     - Extensiones al core de PHP (Colecciones, Anotaciones, Cache, ...)



                                                                   Symfony 2 y su ecosistema   26
Doctrine 2 ORM
              Active Record vs DataMapper

  Tarea
 nombre
descripción
elementos

   save()
  delete()
  update()


                                            Symfony 2 y su ecosistema   27
Doctrine 2 ORM
                 Active Record vs DataMapper

  Tarea
              $tarea = new Tarea();
 nombre       $tarea->setNombre(..)
descripción
elementos     $tarea->save()
              $tarea->delete()
   save()
  delete()
  update()


                                               Symfony 2 y su ecosistema   28
Doctrine 2 ORM
                 Active Record vs DataMapper

  Tarea                                Tarea
              $tarea = new Tarea();
 nombre       $tarea->setNombre(..)
descripción
                                       nombre
elementos     $tarea->save()          descripción
              $tarea->delete()        elementos
   save()
  delete()
  update()


                                                    Symfony 2 y su ecosistema   29
Doctrine 2 ORM
                 Active Record vs DataMapper

  Tarea                                Tarea
              $tarea = new Tarea();                 $tarea = new Tarea();
 nombre       $tarea->setNombre(..)                 $tarea->setNombre(...)
descripción
                                       nombre
elementos     $tarea->save()          descripción   $em->persist($tarea)
              $tarea->delete()        elementos     $em->remove($tarea)
   save()
                                                    $em->flush()
  delete()
  update()


                                                     Symfony 2 y su ecosistema   30
Doctrine 2 ORM
                           Entity Manager
Es el punto de acceso a las funcionalidad del ORM y el el encargado
de persistir las entidades.

                             persist ($entity)
                            remove ($entity)
                                  flush()



                                                        Symfony 2 y su ecosistema   31
Doctrine 2 ORM
                         Entity Respository
Colección de entidades de un mismo tipo. Es el encargado de
separar la lógica de Doctrine de tu modelo.

                                findAll ()
                             findBy (array)
                           findOneBy(array)
                                    …


                                                       Symfony 2 y su ecosistema   32
Doctrine 2 ORM
                             DQL
Lenguaje de búsquedas para tu modelo de objetos.
     SELECT t FROM CodemotionModelTask t WHERE t.horas > 2




                                                  Symfony 2 y su ecosistema   33
Doctrine 2 ORM
                             DQL
Lenguaje de búsquedas para tu modelo de objetos.
     SELECT t FROM CodemotionModelTask t WHERE t.horas > 2

                           Query Builder

                      $qb->add('select', ‘t') ->
             add('from', CodemotionModelTask t') ->
                     add('where', ‘t.horas > 2');

                                                   Symfony 2 y su ecosistema   34
Doctrine 2 ORM
                           Comandos
Doctrine ORM viene con un conjunto de herramientas que nos
simplifica enormemente el trabajo con la bbdd.

                    orm:validate-schema
            orm:schema-tool:update | create | drop
                    orm:generate-entities
                             …


                                                     Symfony 2 y su ecosistema   35
Doctrine 2 ORM
         Documentación



http://www.doctrine-project.org/




                                   Symfony 2 y su ecosistema   36
Twig
https://github.com/fabpot/Twig

Twig es un sistema de plantillas para PHP muy conciso, flexible y
               con una sintaxis orientada a plantillas


                 http://twig.sensiolabs.org/


                                                    Symfony 2 y su ecosistema   37
Twig
                           CONCISO



<?php echo $tarea->getNombre() ?>
<?php echo $hoy->format(‘Y-m-d’); ?>




                                       Symfony 2 y su ecosistema   38
Twig
                           CONCISO



<?php echo $tarea->getNombre() ?>       {{ tarea.nombre }}
<?php echo $hoy->format(‘Y-m-d’); ?>   {{ hoy|date(‘Y-m-d’) }}




                                                 Symfony 2 y su ecosistema   39
Twig
                         SINTAXIS ORIENTADA A PLANTILLAS

<?php if ($tareas): ?>
 <?php foreach ($tareas as $tarea): ?>
    * <?php echo $tarea->getNombre(); ?>
 <?php endforeach; ?>
<?php else: ?>
   No hay tareas disponibles
<?php endif; ?>


                                                           Symfony 2 y su ecosistema   40
Twig
                         SINTAXIS ORIENTADA A PLANTILLAS

<?php if ($tareas): ?>
 <?php foreach ($tareas as $tarea): ?>          {% for tarea in tareas %}
    * <?php echo $tarea->getNombre(); ?>           * {{ tarea.nombre }}
 <?php endforeach; ?>                           {% else %}
<?php else: ?>                                     No hay tareas disponibles
   No hay tareas disponibles                    {% endfor %}
<?php endif; ?>


                                                                Symfony 2 y su ecosistema   41
Twig
                                 Flexible


Permite a los desarrolladores definirse cualquier tag, filtro, función, …


             http://twig.sensiolabs.org/doc/api.html
          http://twig.sensiolabs.org/doc/extensions.html


                                                            Symfony 2 y su ecosistema   42
Dependency Injection
https://github.com/symfony/DependencyInjection

 Estandariza y centraliza la manera en la que se crean los objetos
                            de tu aplicación




                                                     Symfony 2 y su ecosistema   43
Dependency Injection
Pero, …¿ Qué es una inyección de dependencias?




                                                 Symfony 2 y su ecosistema   44
Dependency Injection
Pero, …¿ Qué es una inyección de dependencias?

           $gestorTareas = new GestorTareas($em);




                                                    Symfony 2 y su ecosistema   45
Dependency Injection
Pero, …¿ Qué es una inyección de dependencias?

           $gestorTareas = new GestorTareas($em);


              $gestorTareas = new GestorTareas();
            $gestorTareas->setEntityManager($em);



                                                    Symfony 2 y su ecosistema   46
Dependency Injection Container (DIC)
      Reglas de
       creación
      de objetos




                   DIC




                              Symfony 2 y su ecosistema   47
Dependency Injection Container (DIC)
                       Reglas de
                        creación
                       de objetos



get(‘gestor_tareas’)
                                    DIC




                                          Symfony 2 y su ecosistema   48
Dependency Injection Container (DIC)
                       Reglas de
                        creación
                       de objetos

                                    “gestor_tareas” depende de
get(‘gestor_tareas’)                     “entity_manager”

                                               DIC




                                                                 Symfony 2 y su ecosistema   49
Dependency Injection Container (DIC)
                       Reglas de
                        creación
                       de objetos

                                    “gestor_tareas” depende de
get(‘gestor_tareas’)                     “entity_manager”

                                               DIC
                             $em = $container->get(‘entity_manager’);
                             $gestorTareas = new GestorTareas($em)
                             return $gestorTareas;


                                                                        Symfony 2 y su ecosistema   50
Dependency Injection Container (DIC)
                       Reglas de
                        creación
                       de objetos

                                    “gestor_tareas” depende de
get(‘gestor_tareas’)                     “entity_manager”               $gestorTareas
                                               DIC
                             $em = $container->get(‘entity_manager’);
                             $gestorTareas = new GestorTareas($em)
                             return $gestorTareas;


                                                                        Symfony 2 y su ecosistema   51
http://github.com/javiacei/codemotion-sf2




                                  Symfony 2 y su ecosistema   52
Gracias.

                     fco.javier.aceituno@gmail.com
                           twitter.com/javiacei
http://es.linkedin.com/pub/francisco-javier-aceituno-lapido/32/313/94b



                                                           Symfony 2 y su ecosistema   53

Mais conteúdo relacionado

Semelhante a Symfony2 y su ecosistema

Desymfony 2011 - Tutorial #5: Backend
Desymfony 2011 - Tutorial #5: BackendDesymfony 2011 - Tutorial #5: Backend
Desymfony 2011 - Tutorial #5: BackendJavier Eguiluz
 
Desymfony 2011 - Introducción a Symfony2
Desymfony 2011 - Introducción a Symfony2Desymfony 2011 - Introducción a Symfony2
Desymfony 2011 - Introducción a Symfony2Javier Eguiluz
 
Materiales del curso de Symfony2
Materiales del curso de Symfony2Materiales del curso de Symfony2
Materiales del curso de Symfony2Raul Fraile
 
Mi primer programa en Symfony2
Mi primer programa en Symfony2Mi primer programa en Symfony2
Mi primer programa en Symfony2César Hernández
 
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 pasosJavier Eguiluz
 
Joinea - mongoDB en php y Symfony2
Joinea - mongoDB en php y Symfony2Joinea - mongoDB en php y Symfony2
Joinea - mongoDB en php y Symfony2sergiovier
 
Elementos sobre Symfony 2.1
Elementos sobre Symfony 2.1Elementos sobre Symfony 2.1
Elementos sobre Symfony 2.1Yaismel Miranda
 
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
 
Cadius que es_moo_tools_
Cadius que es_moo_tools_Cadius que es_moo_tools_
Cadius que es_moo_tools_epplestun
 
Symfony: construyendo aplicaciones web
Symfony: construyendo aplicaciones webSymfony: construyendo aplicaciones web
Symfony: construyendo aplicaciones websergiovier
 
Pablo San Emeterio - WHF - Windows Hooking Framework [RootedCON 2012]
Pablo San Emeterio - WHF - Windows Hooking Framework [RootedCON 2012]Pablo San Emeterio - WHF - Windows Hooking Framework [RootedCON 2012]
Pablo San Emeterio - WHF - Windows Hooking Framework [RootedCON 2012]RootedCON
 
Clase 2 conceptos fundamentales
Clase 2   conceptos fundamentalesClase 2   conceptos fundamentales
Clase 2 conceptos fundamentaleshydras_cs
 

Semelhante a Symfony2 y su ecosistema (20)

Desymfony 2011 - Tutorial #5: Backend
Desymfony 2011 - Tutorial #5: BackendDesymfony 2011 - Tutorial #5: Backend
Desymfony 2011 - Tutorial #5: Backend
 
Desymfony 2011 - Introducción a Symfony2
Desymfony 2011 - Introducción a Symfony2Desymfony 2011 - Introducción a Symfony2
Desymfony 2011 - Introducción a Symfony2
 
Materiales del curso de Symfony2
Materiales del curso de Symfony2Materiales del curso de Symfony2
Materiales del curso de Symfony2
 
Mi primer programa en Symfony2
Mi primer programa en Symfony2Mi primer programa en Symfony2
Mi primer programa en Symfony2
 
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
 
Joinea - mongoDB en php y Symfony2
Joinea - mongoDB en php y Symfony2Joinea - mongoDB en php y Symfony2
Joinea - mongoDB en php y Symfony2
 
Elementos sobre Symfony 2.1
Elementos sobre Symfony 2.1Elementos sobre Symfony 2.1
Elementos sobre Symfony 2.1
 
CRUD básico con Symfony
CRUD básico con SymfonyCRUD básico con Symfony
CRUD básico con Symfony
 
Clase iii
Clase iiiClase iii
Clase iii
 
Gestionando servidores con Puppet
Gestionando servidores con PuppetGestionando servidores con Puppet
Gestionando servidores con Puppet
 
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
 
Curso linux clase_2_2012
Curso linux clase_2_2012Curso linux clase_2_2012
Curso linux clase_2_2012
 
spring framework
spring frameworkspring framework
spring framework
 
Presentacion web2py
Presentacion web2pyPresentacion web2py
Presentacion web2py
 
OSGi
OSGiOSGi
OSGi
 
Cadius que es_moo_tools_
Cadius que es_moo_tools_Cadius que es_moo_tools_
Cadius que es_moo_tools_
 
Sf2 pr5 mi primer proyecto
Sf2 pr5 mi primer proyectoSf2 pr5 mi primer proyecto
Sf2 pr5 mi primer proyecto
 
Symfony: construyendo aplicaciones web
Symfony: construyendo aplicaciones webSymfony: construyendo aplicaciones web
Symfony: construyendo aplicaciones web
 
Pablo San Emeterio - WHF - Windows Hooking Framework [RootedCON 2012]
Pablo San Emeterio - WHF - Windows Hooking Framework [RootedCON 2012]Pablo San Emeterio - WHF - Windows Hooking Framework [RootedCON 2012]
Pablo San Emeterio - WHF - Windows Hooking Framework [RootedCON 2012]
 
Clase 2 conceptos fundamentales
Clase 2   conceptos fundamentalesClase 2   conceptos fundamentales
Clase 2 conceptos fundamentales
 

Último

PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELmaryfer27m
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
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
 
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
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxJOSEFERNANDOARENASCA
 
Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxMariaBurgos55
 
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
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
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
 
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
 
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
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptMiguelAtencio10
 
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
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaarkananubis
 
Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..RobertoGumucio2
 
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
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 

Último (20)

PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFEL
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
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
 
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
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptx
 
Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptx
 
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
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .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
 
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
 
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.
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.ppt
 
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
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en mina
 
Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..
 
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
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 

Symfony2 y su ecosistema

  • 1. Symfony 2 y su ecosistema Francisco Javier Aceituno Lapido fco.javier.aceituno@gmail.com
  • 2. Francisco Javier Aceituno Lapido • Ingeniero en Informática (UPM) 2010 • Colaborador en symfony-madrid • Arquitecto de Software en ideup! • Amante del mundo PHP y Symfony desde 2008 Symfony 2 y su ecosistema 2
  • 3. ¿ Qué es Symfony 2? 8 Bundles Symfony 2 y su ecosistema 3
  • 4. ¿ Qué es Symfony 2? ClassLoader HttpFoundation Routing EventDispatcher DependencyInjection Console Config 22 componentes Symfony 2 y su ecosistema 4
  • 5. ¿ Qué es Symfony 2? ClassLoader HttpFoundation Routing EventDispatcher DependencyInjection Console Config 22 componentes Twig Doctrine Monolog Assetic SwiftMailer 5 Librerías externas Symfony 2 y su ecosistema 5
  • 6. ¿ Qué es Symfony 2? ClassLoader HttpFoundation Routing EventDispatcher FrameworkBundle WebProfilerBundle DependencyInjection Console Config TwigBundle 22 componentes SecurityBundle Twig Doctrine Monolog Assetic SwiftMailer 5 Librerías externas 8 Bundles Symfony 2 y su ecosistema 6
  • 7. ¿ Qué es Symfony 2? ClassLoader HttpFoundation Routing EventDispatcher FrameworkBundle WebProfilerBundle DependencyInjection Console Config TwigBundle 22 componentes SecurityBundle Twig Doctrine Monolog Assetic SwiftMailer 5 Librerías externas 8 Bundles Symfony 2 y su ecosistema 7
  • 8. ClassLoader https://github.com/symfony/ClassLoader Carga automáticamente las clases de tu proyecto si – Definición de las clases siguen el estadar PSR-0 (PHP 5.3) Codemotion/Model/Task.php  CodemotionModelTask – Definición de las clases según el convenio PEAR Codemotion/Model/Task.php  Codemotion_Model_Task Symfony 2 y su ecosistema 8
  • 9. HttpFoundation https://github.com/symfony/HttpFoundation Define una capa orientada a objetos de la especificación de HTTP Symfony 2 y su ecosistema 9
  • 10. HttpFoundation https://github.com/symfony/HttpFoundation Define una capa orientada a objetos de la especificación de HTTP Request query request cookies attributes files server headers Symfony 2 y su ecosistema 10
  • 11. HttpFoundation https://github.com/symfony/HttpFoundation Define una capa orientada a objetos de la especificación de HTTP Request query $_GET request $_POST cookies $_GET $_COOKIE attributes files $_FILES server $_SERVER headers Symfony 2 y su ecosistema 11
  • 12. HttpFoundation https://github.com/symfony/HttpFoundation Define una capa orientada a objetos de la especificación de HTTP Request all() query $_GET keys() request $_POST cookies $_GET $_COOKIE replace() add() attributes get() files $_FILES set() server $_SERVER has() headers remove() Symfony 2 y su ecosistema 12
  • 13. HttpFoundation https://github.com/symfony/HttpFoundation Define una capa orientada a objetos de la especificación de HTTP Request Response all() query $_GET keys() request $_POST cookies $_GET $_COOKIE replace() add() content status attributes get() headers files $_FILES set() server $_SERVER has() headers remove() Symfony 2 y su ecosistema 13
  • 14. HttpFoundation https://github.com/symfony/HttpFoundation Define una capa orientada a objetos de la especificación de HTTP send() Request Response prepare() all() query $_GET keys() request $_POST cookies $_GET $_COOKIE replace() add() content $_GET status attributes get() headers files $_FILES set() server $_SERVER has() headers remove() Symfony 2 y su ecosistema 14
  • 15. HttpFoundation https://github.com/symfony/HttpFoundation Define una capa orientada a objetos de la especificación de HTTP send() Request Response prepare() all() query $_GET keys() cache request $_POST cookies $_GET $_COOKIE replace() add() content $_GET setPublic() setPrivate() status attributes get() headers expire) files $_FILES set() setExpires() server $_SERVER has() setMaxAge() headers remove() setLastModified() … Symfony 2 y su ecosistema 15
  • 16. Routing https://github.com/symfony/Routing Mapea una petición HTTP (Request) a un conjunto de variables Symfony 2 y su ecosistema 16
  • 17. Routing https://github.com/symfony/Routing Mapea una petición HTTP (Request) a un conjunto de variables configuración app.php/task/list Router Symfony 2 y su ecosistema 17
  • 18. Routing https://github.com/symfony/Routing Mapea una petición HTTP (Request) a un conjunto de variables configuración app.php/task/list task/list Router Symfony 2 y su ecosistema 18
  • 19. Routing https://github.com/symfony/Routing Mapea una petición HTTP (Request) a un conjunto de variables configuración app.php/task/list task/list controller: TaskController, action: listAction Router Symfony 2 y su ecosistema 19
  • 20. Routing https://github.com/symfony/Routing Mapea una petición HTTP (Request) a un conjunto de variables configuración app.php/task/list task/list controller: TaskController, action: listAction Router app.php/task/1/show Symfony 2 y su ecosistema 20
  • 21. Routing https://github.com/symfony/Routing Mapea una petición HTTP (Request) a un conjunto de variables configuración app.php/task/list task/list controller: TaskController, action: listAction Router app.php/task/1/show task/{id}/show Symfony 2 y su ecosistema 21
  • 22. Routing https://github.com/symfony/Routing Mapea una petición HTTP (Request) a un conjunto de variables configuración app.php/task/list task/list controller: TaskController, action: listAction Router controller: TaskController, action: app.php/task/1/show showAction, id: 1 task/{id}/show Symfony 2 y su ecosistema 22
  • 23. Doctrine 2 Conjunto de librerías PHP que nos proporciona servicios de persistencia Symfony 2 y su ecosistema 23
  • 24. Doctrine 2 https://github.com/doctrine/doctrine2 Doctrine Common - Extensiones al core de PHP (Colecciones, Anotaciones, Cache, ...) Symfony 2 y su ecosistema 24
  • 25. Doctrine 2 https://github.com/doctrine/doctrine2 - Manipulación de la estructura de bbdd. Doctrine DBAL - Abstracción del tipo de bbdd (IMBDB2, PDOIbm, PDOMySQL, PDOOracle, PDOSqlite, …). Doctrine Common - Extensiones al core de PHP (Colecciones, Anotaciones, Cache, ...) Symfony 2 y su ecosistema 25
  • 26. Doctrine 2 https://github.com/doctrine/doctrine2 - Ofrece persistencia transparente a los objetos de PHP. Doctrine ORM - Doctrine Query Language (DQL) nos abstrae el mapeo entre las columnas y tablas de la bbdd y los objetos. - Manipulación de la estructura de bbdd. Doctrine DBAL - Abstracción del tipo de bbdd (IMBDB2, PDOIbm, PDOMySQL, PDOOracle, PDOSqlite, …). Doctrine Common - Extensiones al core de PHP (Colecciones, Anotaciones, Cache, ...) Symfony 2 y su ecosistema 26
  • 27. Doctrine 2 ORM Active Record vs DataMapper Tarea nombre descripción elementos save() delete() update() Symfony 2 y su ecosistema 27
  • 28. Doctrine 2 ORM Active Record vs DataMapper Tarea $tarea = new Tarea(); nombre $tarea->setNombre(..) descripción elementos $tarea->save() $tarea->delete() save() delete() update() Symfony 2 y su ecosistema 28
  • 29. Doctrine 2 ORM Active Record vs DataMapper Tarea Tarea $tarea = new Tarea(); nombre $tarea->setNombre(..) descripción nombre elementos $tarea->save() descripción $tarea->delete() elementos save() delete() update() Symfony 2 y su ecosistema 29
  • 30. Doctrine 2 ORM Active Record vs DataMapper Tarea Tarea $tarea = new Tarea(); $tarea = new Tarea(); nombre $tarea->setNombre(..) $tarea->setNombre(...) descripción nombre elementos $tarea->save() descripción $em->persist($tarea) $tarea->delete() elementos $em->remove($tarea) save() $em->flush() delete() update() Symfony 2 y su ecosistema 30
  • 31. Doctrine 2 ORM Entity Manager Es el punto de acceso a las funcionalidad del ORM y el el encargado de persistir las entidades. persist ($entity) remove ($entity) flush() Symfony 2 y su ecosistema 31
  • 32. Doctrine 2 ORM Entity Respository Colección de entidades de un mismo tipo. Es el encargado de separar la lógica de Doctrine de tu modelo. findAll () findBy (array) findOneBy(array) … Symfony 2 y su ecosistema 32
  • 33. Doctrine 2 ORM DQL Lenguaje de búsquedas para tu modelo de objetos. SELECT t FROM CodemotionModelTask t WHERE t.horas > 2 Symfony 2 y su ecosistema 33
  • 34. Doctrine 2 ORM DQL Lenguaje de búsquedas para tu modelo de objetos. SELECT t FROM CodemotionModelTask t WHERE t.horas > 2 Query Builder $qb->add('select', ‘t') -> add('from', CodemotionModelTask t') -> add('where', ‘t.horas > 2'); Symfony 2 y su ecosistema 34
  • 35. Doctrine 2 ORM Comandos Doctrine ORM viene con un conjunto de herramientas que nos simplifica enormemente el trabajo con la bbdd. orm:validate-schema orm:schema-tool:update | create | drop orm:generate-entities … Symfony 2 y su ecosistema 35
  • 36. Doctrine 2 ORM Documentación http://www.doctrine-project.org/ Symfony 2 y su ecosistema 36
  • 37. Twig https://github.com/fabpot/Twig Twig es un sistema de plantillas para PHP muy conciso, flexible y con una sintaxis orientada a plantillas http://twig.sensiolabs.org/ Symfony 2 y su ecosistema 37
  • 38. Twig CONCISO <?php echo $tarea->getNombre() ?> <?php echo $hoy->format(‘Y-m-d’); ?> Symfony 2 y su ecosistema 38
  • 39. Twig CONCISO <?php echo $tarea->getNombre() ?> {{ tarea.nombre }} <?php echo $hoy->format(‘Y-m-d’); ?> {{ hoy|date(‘Y-m-d’) }} Symfony 2 y su ecosistema 39
  • 40. Twig SINTAXIS ORIENTADA A PLANTILLAS <?php if ($tareas): ?> <?php foreach ($tareas as $tarea): ?> * <?php echo $tarea->getNombre(); ?> <?php endforeach; ?> <?php else: ?> No hay tareas disponibles <?php endif; ?> Symfony 2 y su ecosistema 40
  • 41. Twig SINTAXIS ORIENTADA A PLANTILLAS <?php if ($tareas): ?> <?php foreach ($tareas as $tarea): ?> {% for tarea in tareas %} * <?php echo $tarea->getNombre(); ?> * {{ tarea.nombre }} <?php endforeach; ?> {% else %} <?php else: ?> No hay tareas disponibles No hay tareas disponibles {% endfor %} <?php endif; ?> Symfony 2 y su ecosistema 41
  • 42. Twig Flexible Permite a los desarrolladores definirse cualquier tag, filtro, función, … http://twig.sensiolabs.org/doc/api.html http://twig.sensiolabs.org/doc/extensions.html Symfony 2 y su ecosistema 42
  • 43. Dependency Injection https://github.com/symfony/DependencyInjection Estandariza y centraliza la manera en la que se crean los objetos de tu aplicación Symfony 2 y su ecosistema 43
  • 44. Dependency Injection Pero, …¿ Qué es una inyección de dependencias? Symfony 2 y su ecosistema 44
  • 45. Dependency Injection Pero, …¿ Qué es una inyección de dependencias? $gestorTareas = new GestorTareas($em); Symfony 2 y su ecosistema 45
  • 46. Dependency Injection Pero, …¿ Qué es una inyección de dependencias? $gestorTareas = new GestorTareas($em); $gestorTareas = new GestorTareas(); $gestorTareas->setEntityManager($em); Symfony 2 y su ecosistema 46
  • 47. Dependency Injection Container (DIC) Reglas de creación de objetos DIC Symfony 2 y su ecosistema 47
  • 48. Dependency Injection Container (DIC) Reglas de creación de objetos get(‘gestor_tareas’) DIC Symfony 2 y su ecosistema 48
  • 49. Dependency Injection Container (DIC) Reglas de creación de objetos “gestor_tareas” depende de get(‘gestor_tareas’) “entity_manager” DIC Symfony 2 y su ecosistema 49
  • 50. Dependency Injection Container (DIC) Reglas de creación de objetos “gestor_tareas” depende de get(‘gestor_tareas’) “entity_manager” DIC $em = $container->get(‘entity_manager’); $gestorTareas = new GestorTareas($em) return $gestorTareas; Symfony 2 y su ecosistema 50
  • 51. Dependency Injection Container (DIC) Reglas de creación de objetos “gestor_tareas” depende de get(‘gestor_tareas’) “entity_manager” $gestorTareas DIC $em = $container->get(‘entity_manager’); $gestorTareas = new GestorTareas($em) return $gestorTareas; Symfony 2 y su ecosistema 51
  • 52. http://github.com/javiacei/codemotion-sf2 Symfony 2 y su ecosistema 52
  • 53. Gracias. fco.javier.aceituno@gmail.com twitter.com/javiacei http://es.linkedin.com/pub/francisco-javier-aceituno-lapido/32/313/94b Symfony 2 y su ecosistema 53