Desenvolupament d'Aplicacions

Què és Auto Wiring en serveis Symfony?

Els serveis en Symfony ens aporten una sèrie d'avantatges, entre elles ens permet no carregar una classe fins que no vagi a ser utilitzada i una facilitat en el seu ús, no sent necessari instanciar una classe per executar una funció.

Què és Auto Wiring en serveis Symfony?

Auto Wiring a Symfony

En els serveis, com sabem, podem definir arguments que posteriorment agafem com a paràmetres a través del constructor del servei.

En el següent exemple veiem un servei que està rebent paràmetres, no té cap misteri, com veiem estem passant el EntityManger com a paràmetre:

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

class Filters {

    private $em;

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

El “enfarfec” està a la declaració del servei, li estem passant com a argument el EntityManager:

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

Ara suposem que estem passant molts paràmetres, m'haig d'acordar que “@doctrine.orm.entity_manager"” correspon al EntityManger?, seria molt enutjós.

Doncs bé, a partir de Symfony 2.8 existeix una propietat anomenada “Auto Wiring”, amb aquesta propietat la declaració de l'anterior servei seria:

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

El que fa aquesta propietat és ella mateixa encarregués d'endevinar què paràmetres estem passant al servei i de quin tipus són.

Comparteix aquest article

Articles Relacionats