Symfony2:
Bundles, servicios y extensiones de Twig.

¿Qué es un bundle?

pero...
¿Cómo y cuándo creamos un bundle?

Muy fácil

Tags de github


  1. Bundle versión 1

  2. Bundle versión 2

  3. Bundle versión 3

perfecto!
Ya tenemos nuestro bundle

Pero... ¿Existe algo que echas de menos?

  1. Me gustaría no tener que hacer el use de la clase de otro bundle

                            
    use JaviAcei\PaginatorBundle\Model\Paginator;
                            
                        

  2. También me gustaría no tener que instanciar la clase y pasandole el objeto Request como parámetro

                            
    $request    = $this->getRequest();
    $paginator  = new Paginator($request);
                            
                        

La solución a nuestros problemas es un Servicio

¿Qué es un servicio?

Un servicio es cualquier objeto PHP que realiza algún tipo de trabajo global

Fabien Potencier

y ... ¿Cómo se crea un servicio?

Utilizando el contenedor de inyección de dependencias

Necesitamos el Contenedor de Inyección de Dependencias para:

  1. Describir los objetos y sus dependencias.


  2. Inicializar y configurar los objetos bajo demanda.

Tags de github


  1. Servicios versión 1

Y si quiero configurar el bundle desde el config.yml

¿Qué debo hacer?

Tags de github


  1. Servicios versión 2

muy bien, todo muy bonito, pero...

¿Qué pasa con la vista?

Vamos a crear una función Twig

Funciones Twig

Una función twig es una función o método de PHP que puede ser invocado desde los templates


y ... ¿Como se crea una función twig?

  1. Creando una clase que extienda de la clase abstracta \Twig_Extension.


  2. Registrando la extensión en el contenedor de inyección de dependencias.

Tags de github


  1. Twig versión 1

Francisco Javier Aceituno

Twitter @javiacei

Email fco.javier.aceituno@gmail.com

IdeupSimplePaginatorBundle

https://github.com/javiacei/IdeupSimplePaginatorBundle

Presentación

https://github.com/javiacei/BundlesServicesAndTwigSlides

Código ejemplo

https://github.com/javiacei/BundlesServicesAndTwig

¿Alguna duda?