Symfony 2 y su ecosistemaFrancisco Javier Aceituno Lapidofco.javier.aceituno@gmail.com
Francisco Javier Aceituno Lapido• Ingeniero en Informática (UPM) 2010• Colaborador en symfony-madrid• Arquitecto de Softwa...
¿ Qué es Symfony 2?                         8 Bundles                      Symfony 2 y su ecosistema   3
¿ Qué es Symfony 2? ClassLoader          HttpFoundation   Routing        EventDispatcherDependencyInjection         Consol...
¿ Qué es Symfony 2? ClassLoader          HttpFoundation             Routing             EventDispatcherDependencyInjection...
¿ Qué es Symfony 2? ClassLoader          HttpFoundation             Routing             EventDispatcher     FrameworkBundl...
¿ Qué es Symfony 2? ClassLoader          HttpFoundation             Routing             EventDispatcher     FrameworkBundl...
ClassLoaderhttps://github.com/symfony/ClassLoaderCarga automáticamente las clases de tu proyecto si   – Definición de las ...
HttpFoundationhttps://github.com/symfony/HttpFoundationDefine una capa orientada a objetos de la especificación de HTTP   ...
HttpFoundationhttps://github.com/symfony/HttpFoundationDefine una capa orientada a objetos de la especificación de HTTP  R...
HttpFoundationhttps://github.com/symfony/HttpFoundationDefine una capa orientada a objetos de la especificación de HTTP  R...
HttpFoundationhttps://github.com/symfony/HttpFoundationDefine una capa orientada a objetos de la especificación de HTTP  R...
HttpFoundationhttps://github.com/symfony/HttpFoundationDefine una capa orientada a objetos de la especificación de HTTP  R...
HttpFoundationhttps://github.com/symfony/HttpFoundationDefine una capa orientada a objetos de la especificación de HTTP   ...
HttpFoundationhttps://github.com/symfony/HttpFoundationDefine una capa orientada a objetos de la especificación de HTTP   ...
Routinghttps://github.com/symfony/RoutingMapea una petición HTTP (Request) a un conjunto de variables                     ...
Routinghttps://github.com/symfony/RoutingMapea una petición HTTP (Request) a un conjunto de variables                     ...
Routinghttps://github.com/symfony/RoutingMapea una petición HTTP (Request) a un conjunto de variables                     ...
Routinghttps://github.com/symfony/RoutingMapea una petición HTTP (Request) a un conjunto de variables                     ...
Routinghttps://github.com/symfony/RoutingMapea una petición HTTP (Request) a un conjunto de variables                     ...
Routinghttps://github.com/symfony/RoutingMapea una petición HTTP (Request) a un conjunto de variables                     ...
Routinghttps://github.com/symfony/RoutingMapea una petición HTTP (Request) a un conjunto de variables                     ...
Doctrine 2Conjunto de librerías PHP que nos proporciona servicios de persistencia                                         ...
Doctrine 2https://github.com/doctrine/doctrine2   Doctrine Common     - Extensiones al core de PHP (Colecciones, Anotacion...
Doctrine 2https://github.com/doctrine/doctrine2                       - Manipulación de la estructura de bbdd.    Doctrine...
Doctrine 2https://github.com/doctrine/doctrine2                       - Ofrece persistencia transparente a los objetos de ...
Doctrine 2 ORM              Active Record vs DataMapper  Tarea nombredescripciónelementos   save()  delete()  update()    ...
Doctrine 2 ORM                 Active Record vs DataMapper  Tarea              $tarea = new Tarea(); nombre       $tarea->...
Doctrine 2 ORM                 Active Record vs DataMapper  Tarea                                Tarea              $tarea...
Doctrine 2 ORM                 Active Record vs DataMapper  Tarea                                Tarea              $tarea...
Doctrine 2 ORM                           Entity ManagerEs el punto de acceso a las funcionalidad del ORM y el el encargado...
Doctrine 2 ORM                         Entity RespositoryColección de entidades de un mismo tipo. Es el encargado desepara...
Doctrine 2 ORM                             DQLLenguaje de búsquedas para tu modelo de objetos.     SELECT t FROM Codemotio...
Doctrine 2 ORM                             DQLLenguaje de búsquedas para tu modelo de objetos.     SELECT t FROM Codemotio...
Doctrine 2 ORM                           ComandosDoctrine ORM viene con un conjunto de herramientas que nossimplifica enor...
Doctrine 2 ORM         Documentaciónhttp://www.doctrine-project.org/                                   Symfony 2 y su ecos...
Twighttps://github.com/fabpot/TwigTwig es un sistema de plantillas para PHP muy conciso, flexible y               con una ...
Twig                           CONCISO<?php echo $tarea->getNombre() ?><?php echo $hoy->format(‘Y-m-d’); ?>               ...
Twig                           CONCISO<?php echo $tarea->getNombre() ?>       {{ tarea.nombre }}<?php echo $hoy->format(‘Y...
Twig                         SINTAXIS ORIENTADA A PLANTILLAS<?php if ($tareas): ?> <?php foreach ($tareas as $tarea): ?>  ...
Twig                         SINTAXIS ORIENTADA A PLANTILLAS<?php if ($tareas): ?> <?php foreach ($tareas as $tarea): ?>  ...
Twig                                 FlexiblePermite a los desarrolladores definirse cualquier tag, filtro, función, …    ...
Dependency Injectionhttps://github.com/symfony/DependencyInjection Estandariza y centraliza la manera en la que se crean l...
Dependency InjectionPero, …¿ Qué es una inyección de dependencias?                                                 Symfony...
Dependency InjectionPero, …¿ Qué es una inyección de dependencias?           $gestorTareas = new GestorTareas($em);       ...
Dependency InjectionPero, …¿ Qué es una inyección de dependencias?           $gestorTareas = new GestorTareas($em);       ...
Dependency Injection Container (DIC)      Reglas de       creación      de objetos                   DIC                  ...
Dependency Injection Container (DIC)                       Reglas de                        creación                      ...
Dependency Injection Container (DIC)                       Reglas de                        creación                      ...
Dependency Injection Container (DIC)                       Reglas de                        creación                      ...
Dependency Injection Container (DIC)                       Reglas de                        creación                      ...
http://github.com/javiacei/codemotion-sf2                                  Symfony 2 y su ecosistema   52
Gracias.                     fco.javier.aceituno@gmail.com                           twitter.com/javiaceihttp://es.linkedi...
Upcoming SlideShare
Loading in …5
×

Symfony2 y su ecosistema

3,697 views

Published on

Desarrolla tus proyectos PHP utilizando los componentes de Symonfy2 (ClassLoader, HttpFoundation, Routing, Dependecy Injection) y las librerías Doctrine 2 y sistema de plantillas Twig.

Como apoyo a las transparencias aquí teneis una pequeña aplicación desarrolloada con dichos componentes y librerías.

https://github.com/javiacei/codemotion-sf2

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

No Downloads
Views
Total views
3,697
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
61
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Symfony2 y su ecosistema

  1. 1. Symfony 2 y su ecosistemaFrancisco Javier Aceituno Lapidofco.javier.aceituno@gmail.com
  2. 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. 3. ¿ Qué es Symfony 2? 8 Bundles Symfony 2 y su ecosistema 3
  4. 4. ¿ Qué es Symfony 2? ClassLoader HttpFoundation Routing EventDispatcherDependencyInjection Console Config 22 componentes Symfony 2 y su ecosistema 4
  5. 5. ¿ Qué es Symfony 2? ClassLoader HttpFoundation Routing EventDispatcherDependencyInjection Console Config 22 componentes Twig Doctrine Monolog Assetic SwiftMailer 5 Librerías externas Symfony 2 y su ecosistema 5
  6. 6. ¿ Qué es Symfony 2? ClassLoader HttpFoundation Routing EventDispatcher FrameworkBundle WebProfilerBundleDependencyInjection Console Config TwigBundle 22 componentes SecurityBundle Twig Doctrine Monolog Assetic SwiftMailer 5 Librerías externas 8 Bundles Symfony 2 y su ecosistema 6
  7. 7. ¿ Qué es Symfony 2? ClassLoader HttpFoundation Routing EventDispatcher FrameworkBundle WebProfilerBundleDependencyInjection Console Config TwigBundle 22 componentes SecurityBundle Twig Doctrine Monolog Assetic SwiftMailer 5 Librerías externas 8 Bundles Symfony 2 y su ecosistema 7
  8. 8. ClassLoaderhttps://github.com/symfony/ClassLoaderCarga 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. 9. HttpFoundationhttps://github.com/symfony/HttpFoundationDefine una capa orientada a objetos de la especificación de HTTP Symfony 2 y su ecosistema 9
  10. 10. HttpFoundationhttps://github.com/symfony/HttpFoundationDefine 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. 11. HttpFoundationhttps://github.com/symfony/HttpFoundationDefine 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. 12. HttpFoundationhttps://github.com/symfony/HttpFoundationDefine 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. 13. HttpFoundationhttps://github.com/symfony/HttpFoundationDefine 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. 14. HttpFoundationhttps://github.com/symfony/HttpFoundationDefine 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. 15. HttpFoundationhttps://github.com/symfony/HttpFoundationDefine 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. 16. Routinghttps://github.com/symfony/RoutingMapea una petición HTTP (Request) a un conjunto de variables Symfony 2 y su ecosistema 16
  17. 17. Routinghttps://github.com/symfony/RoutingMapea una petición HTTP (Request) a un conjunto de variables configuración app.php/task/list Router Symfony 2 y su ecosistema 17
  18. 18. Routinghttps://github.com/symfony/RoutingMapea 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. 19. Routinghttps://github.com/symfony/RoutingMapea 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. 20. Routinghttps://github.com/symfony/RoutingMapea 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. 21. Routinghttps://github.com/symfony/RoutingMapea 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. 22. Routinghttps://github.com/symfony/RoutingMapea 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. 23. Doctrine 2Conjunto de librerías PHP que nos proporciona servicios de persistencia Symfony 2 y su ecosistema 23
  24. 24. Doctrine 2https://github.com/doctrine/doctrine2 Doctrine Common - Extensiones al core de PHP (Colecciones, Anotaciones, Cache, ...) Symfony 2 y su ecosistema 24
  25. 25. Doctrine 2https://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. 26. Doctrine 2https://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. 27. Doctrine 2 ORM Active Record vs DataMapper Tarea nombredescripciónelementos save() delete() update() Symfony 2 y su ecosistema 27
  28. 28. Doctrine 2 ORM Active Record vs DataMapper Tarea $tarea = new Tarea(); nombre $tarea->setNombre(..)descripciónelementos $tarea->save() $tarea->delete() save() delete() update() Symfony 2 y su ecosistema 28
  29. 29. Doctrine 2 ORM Active Record vs DataMapper Tarea Tarea $tarea = new Tarea(); nombre $tarea->setNombre(..)descripción nombreelementos $tarea->save() descripción $tarea->delete() elementos save() delete() update() Symfony 2 y su ecosistema 29
  30. 30. Doctrine 2 ORM Active Record vs DataMapper Tarea Tarea $tarea = new Tarea(); $tarea = new Tarea(); nombre $tarea->setNombre(..) $tarea->setNombre(...)descripción nombreelementos $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. 31. Doctrine 2 ORM Entity ManagerEs el punto de acceso a las funcionalidad del ORM y el el encargadode persistir las entidades. persist ($entity) remove ($entity) flush() Symfony 2 y su ecosistema 31
  32. 32. Doctrine 2 ORM Entity RespositoryColección de entidades de un mismo tipo. Es el encargado deseparar la lógica de Doctrine de tu modelo. findAll () findBy (array) findOneBy(array) … Symfony 2 y su ecosistema 32
  33. 33. Doctrine 2 ORM DQLLenguaje de búsquedas para tu modelo de objetos. SELECT t FROM CodemotionModelTask t WHERE t.horas > 2 Symfony 2 y su ecosistema 33
  34. 34. Doctrine 2 ORM DQLLenguaje 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. 35. Doctrine 2 ORM ComandosDoctrine ORM viene con un conjunto de herramientas que nossimplifica 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. 36. Doctrine 2 ORM Documentaciónhttp://www.doctrine-project.org/ Symfony 2 y su ecosistema 36
  37. 37. Twighttps://github.com/fabpot/TwigTwig 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. 38. Twig CONCISO<?php echo $tarea->getNombre() ?><?php echo $hoy->format(‘Y-m-d’); ?> Symfony 2 y su ecosistema 38
  39. 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. 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. 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. 42. Twig FlexiblePermite 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. 43. Dependency Injectionhttps://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. 44. Dependency InjectionPero, …¿ Qué es una inyección de dependencias? Symfony 2 y su ecosistema 44
  45. 45. Dependency InjectionPero, …¿ Qué es una inyección de dependencias? $gestorTareas = new GestorTareas($em); Symfony 2 y su ecosistema 45
  46. 46. Dependency InjectionPero, …¿ Qué es una inyección de dependencias? $gestorTareas = new GestorTareas($em); $gestorTareas = new GestorTareas(); $gestorTareas->setEntityManager($em); Symfony 2 y su ecosistema 46
  47. 47. Dependency Injection Container (DIC) Reglas de creación de objetos DIC Symfony 2 y su ecosistema 47
  48. 48. Dependency Injection Container (DIC) Reglas de creación de objetosget(‘gestor_tareas’) DIC Symfony 2 y su ecosistema 48
  49. 49. Dependency Injection Container (DIC) Reglas de creación de objetos “gestor_tareas” depende deget(‘gestor_tareas’) “entity_manager” DIC Symfony 2 y su ecosistema 49
  50. 50. Dependency Injection Container (DIC) Reglas de creación de objetos “gestor_tareas” depende deget(‘gestor_tareas’) “entity_manager” DIC $em = $container->get(‘entity_manager’); $gestorTareas = new GestorTareas($em) return $gestorTareas; Symfony 2 y su ecosistema 50
  51. 51. Dependency Injection Container (DIC) Reglas de creación de objetos “gestor_tareas” depende deget(‘gestor_tareas’) “entity_manager” $gestorTareas DIC $em = $container->get(‘entity_manager’); $gestorTareas = new GestorTareas($em) return $gestorTareas; Symfony 2 y su ecosistema 51
  52. 52. http://github.com/javiacei/codemotion-sf2 Symfony 2 y su ecosistema 52
  53. 53. Gracias. fco.javier.aceituno@gmail.com twitter.com/javiaceihttp://es.linkedin.com/pub/francisco-javier-aceituno-lapido/32/313/94b Symfony 2 y su ecosistema 53

×