Symfony2 y su ecosistema

download Symfony2 y su ecosistema

of 53

  • date post

    08-May-2015
  • Category

    Technology

  • view

    3.380
  • download

    1

Embed Size (px)

description

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

Transcript of Symfony2 y su ecosistema

  • 1.Symfony 2 y su ecosistemaFrancisco Javier Aceituno Lapidofco.javier.aceituno@gmail.com

2. Francisco Javier Aceituno Lapido Ingeniero en Informtica (UPM) 2010 Colaborador en symfony-madrid Arquitecto de Software en ideup! Amante del mundo PHP y Symfony desde 2008Symfony 2 y su ecosistema 2 3. Qu es Symfony 2? 8 BundlesSymfony 2 y su ecosistema 3 4. Qu es Symfony 2? ClassLoaderHttpFoundation RoutingEventDispatcherDependencyInjection Console Config 22 componentesSymfony 2 y su ecosistema 4 5. Qu es Symfony 2? ClassLoaderHttpFoundation Routing EventDispatcherDependencyInjection Console Config 22 componentesTwig DoctrineMonolog AsseticSwiftMailer5 Libreras externasSymfony 2 y su ecosistema 5 6. Qu es Symfony 2? ClassLoaderHttpFoundation Routing EventDispatcher FrameworkBundle WebProfilerBundleDependencyInjection Console Config TwigBundle 22 componentes SecurityBundleTwig DoctrineMonolog AsseticSwiftMailer5 Libreras externas 8 BundlesSymfony 2 y su ecosistema 6 7. Qu es Symfony 2? ClassLoaderHttpFoundation Routing EventDispatcher FrameworkBundle WebProfilerBundleDependencyInjection Console Config TwigBundle 22 componentes SecurityBundleTwig DoctrineMonolog AsseticSwiftMailer5 Libreras externas 8 BundlesSymfony 2 y su ecosistema 7 8. ClassLoaderhttps://github.com/symfony/ClassLoaderCarga automticamente las clases de tu proyecto si Definicin de las clases siguen el estadar PSR-0 (PHP 5.3)Codemotion/Model/Task.php CodemotionModelTask Definicin de las clases segn el convenio PEARCodemotion/Model/Task.php Codemotion_Model_TaskSymfony 2 y su ecosistema 8 9. HttpFoundationhttps://github.com/symfony/HttpFoundationDefine una capa orientada a objetos de la especificacin de HTTPSymfony 2 y su ecosistema 9 10. HttpFoundationhttps://github.com/symfony/HttpFoundationDefine una capa orientada a objetos de la especificacin de HTTPRequestquery request cookiesattributes filesserver headersSymfony 2 y su ecosistema 10 11. HttpFoundationhttps://github.com/symfony/HttpFoundationDefine una capa orientada a objetos de la especificacin de HTTPRequestquery$_GET request $_POST cookies$_GET $_COOKIEattributes files $_FILESserver $_SERVER headersSymfony 2 y su ecosistema 11 12. HttpFoundationhttps://github.com/symfony/HttpFoundationDefine una capa orientada a objetos de la especificacin de HTTPRequest all()query$_GETkeys() request $_POST cookies$_GET $_COOKIEreplace()add()attributes get() files $_FILES set()server $_SERVER has() headersremove()Symfony 2 y su ecosistema 12 13. HttpFoundationhttps://github.com/symfony/HttpFoundationDefine una capa orientada a objetos de la especificacin de HTTPRequest Response all()query$_GETkeys() request $_POST cookies$_GET $_COOKIEreplace()add()content statusattributes get()headers files $_FILES set()server $_SERVER has() headersremove()Symfony 2 y su ecosistema 13 14. HttpFoundationhttps://github.com/symfony/HttpFoundationDefine una capa orientada a objetos de la especificacin de HTTPsend()Request Response prepare() all()query$_GETkeys() request $_POST cookies$_GET $_COOKIEreplace()add()content $_GET statusattributes get()headers files $_FILES set()server $_SERVER has() headersremove()Symfony 2 y su ecosistema 14 15. HttpFoundationhttps://github.com/symfony/HttpFoundationDefine una capa orientada a objetos de la especificacin de HTTPsend()Request Response prepare() all()query$_GETkeys() cache request $_POST cookies$_GET $_COOKIEreplace()add()content $_GETsetPublic()setPrivate() statusattributes get()headersexpire) files $_FILES set()setExpires()server $_SERVER has()setMaxAge() headersremove() setLastModified() Symfony 2 y su ecosistema 15 16. Routinghttps://github.com/symfony/RoutingMapea una peticin HTTP (Request) a un conjunto de variablesSymfony 2 y su ecosistema 16 17. Routinghttps://github.com/symfony/RoutingMapea una peticin HTTP (Request) a un conjunto de variables configuracinapp.php/task/listRouter Symfony 2 y su ecosistema 17 18. Routinghttps://github.com/symfony/RoutingMapea una peticin HTTP (Request) a un conjunto de variablesconfiguracinapp.php/task/list task/listRouterSymfony 2 y su ecosistema 18 19. Routinghttps://github.com/symfony/RoutingMapea una peticin HTTP (Request) a un conjunto de variablesconfiguracinapp.php/task/list task/list controller: TaskController, action: listActionRouter Symfony 2 y su ecosistema 19 20. Routinghttps://github.com/symfony/RoutingMapea una peticin HTTP (Request) a un conjunto de variablesconfiguracinapp.php/task/list task/list controller: TaskController, action: listActionRouterapp.php/task/1/show Symfony 2 y su ecosistema 20 21. Routinghttps://github.com/symfony/RoutingMapea una peticin HTTP (Request) a un conjunto de variablesconfiguracinapp.php/task/list task/list controller: TaskController, action: listActionRouterapp.php/task/1/showtask/{id}/show Symfony 2 y su ecosistema 21 22. Routinghttps://github.com/symfony/RoutingMapea una peticin HTTP (Request) a un conjunto de variablesconfiguracinapp.php/task/list task/list controller: TaskController, action: listActionRoutercontroller: TaskController, action:app.php/task/1/show showAction, id: 1task/{id}/show Symfony 2 y su ecosistema 22 23. Doctrine 2Conjunto de libreras PHP que nos proporciona servicios de persistenciaSymfony 2 y su ecosistema 23 24. Doctrine 2https://github.com/doctrine/doctrine2 Doctrine Common - Extensiones al core de PHP (Colecciones, Anotaciones, Cache, ...) Symfony 2 y su ecosistema 24 25. Doctrine 2https://github.com/doctrine/doctrine2 - Manipulacin de la estructura de bbdd.Doctrine DBAL- Abstraccin 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 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. - Manipulacin de la estructura de bbdd.Doctrine DBAL- Abstraccin 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 ORMActive Record vs DataMapperTarea nombredescripcinelementos save()delete()update()Symfony 2 y su ecosistema 27 28. Doctrine 2 ORM Active Record vs DataMapperTarea$tarea = new Tarea(); nombre $tarea->setNombre(..)descripcinelementos $tarea->save()$tarea->delete() save()delete()update() Symfony 2 y su ecosistema 28 29. Doctrine 2 ORM Active Record vs DataMapperTareaTarea$tarea = new Tarea(); nombre $tarea->setNombre(..)descripcin nombreelementos $tarea->save()descripcin$tarea->delete()elementos save()delete()update()Symfony 2 y su ecosistema 29 30. Doctrine 2 ORM Active Record vs DataMapperTareaTarea$tarea = new Tarea(); $tarea = new Tarea(); nombre $tarea->setNombre(..) $tarea->setNombre(...)descripcin nombreelementos $tarea->save()descripcin $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 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. Doctrine 2 ORM Entity RespositoryColeccin de entidades de un mismo tipo. Es el encargado deseparar la lgica de Doctrine de tu modelo.findAll () findBy (array) findOneBy(array) Symfony 2 y su ecosistema 32 33. Doctrine 2 ORM DQLLenguaje de bsquedas para tu modelo de objetos. SELECT t FROM CodemotionModelTask t WHERE t.horas > 2Symfony 2 y su ecosistema 33 34. Doctrine 2 ORM DQLLenguaje de bsquedas 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 ComandosDoctrine ORM viene con un conjunto de herramientas que nossimplifica enormemente el trabajo con la bbdd.orm:validate-schemaorm:schema-tool:update | create | droporm:generate-entities Symfony 2 y su ecosistema 35 36. Doctrine 2 ORM Documentacinhttp://www.doctrine-project.org/ Symfony 2 y su ecosistema 36 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. Twig CONCISO Symfony 2 y su ecosistema 38 39. Twig CONCISO {{ tarea.nombre }} {{ hoy|date(Y-m-d) }} Symfony 2 y su ecosistema 39 40. Twig SINTAXIS ORIENTADA A PLANTILLAS * No hay tareas disponibles Symfony 2 y su ecosistema 40 41. Twig SINTAXIS ORIENTADA A PLANTILLAS {% for tarea in tareas %}* * {{ tarea.nombre }} {% else %} No hay tareas disponibles No hay tareas disponibles{% endfor %}Symfony 2 y su ecosistema 41 42. Twig FlexiblePermite a los desarrolladores definirse cualquier tag, filtro, funcin, http://twig.sensiolabs.org/doc/api.htmlhttp://twig.sensiolabs.org/doc/extensions.htmlSymfony 2 y su ecosistema 42 43. Dependency Injectionhttps://github.com/symfony/DependencyInjection Estandariza y centraliza la manera en la que se crean los objetosde tu aplicacin Symfony 2 y su ecosistema 43 44. Dependency InjectionPero, Qu es una inyeccin de dependencias? Symfony 2 y su ecosistema 44 45. Dependency InjectionPero, Qu es una inyeccin de dependencias? $gestorTareas = new GestorTareas($em);Symfony 2 y su ecosistema 45 46. Dependency InjectionPero, Qu es una inyeccin 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 creacinde objetos DICSymfony 2 y su ecosistema 47 48. Dependency Injection Container (DIC) Reglas decreacin de objetosget(gestor_tareas)DICSymfony 2 y su ecosistema 48 49. Dependency Injec