Desarrollo de Aplicaciones

¿Qué es Auto Wiring en servicios Symfony?

Los servicios en Symfony nos aportan una serie de ventajas, entre ellas nos permite no cargar una clase hasta que no vaya a ser utilizada y una facilidad en su uso, no siendo necesario instanciar una clase para ejecutar una función.

¿Qué es Auto Wiring en servicios Symfony?

Auto Wiring en Symfony

En los servicios, como sabemos, podemos definir argumentos que posteriormente cogemos como parámetros a través del constructor del servicio.

En el siguiente ejemplo vemos un servicio que está recibiendo parámetros, no tiene ningún misterio, como vemos estamos pasando el EntityManger como parámetro:

<?php
namespace DawBackBundle\Services;
use Doctrine\ORM\EntityManager;

class Filters {

    private $em;

    public function __construct (EntityManager $em) {
        $this->em = $em;
    }

El “engorro” está en la declaración del servicio, le estamos pasando como argumento el EntityManager:

dawback.filters:
        class: DawBackBundle\Services\Filters
        arguments: ["@doctrine.orm.entity_manager"]

Ahora suponemos que estamos pasando muchos parámetros, ¿me tengo que acordar de que “@doctrine.orm.entity_manager"” corresponde al EntityManger?, sería muy engorroso.

Pues bien, a partir de Symfony 2.8 existe una propiedad llamada “Auto Wiring”, con esta propiedad la declaración del anterior servicio sería:

dawback.filters:
        class: DawBackBundle\Services\Filters
        autowire: true

Lo que hace esta propiedad es ella misma encargase de adivinar qué parámetros estamos pasando al servicio y de qué tipo son.

Comparte este artículo

Artículos Relacionados