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ó.
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