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?
Santi López
Santi López

març 22, 2017

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