Acceder al contenido principal

Autowiring en Drupal

Volver a Blog

Autowiring en Drupal

02 Jul 021
Drupal Logo
Ramiro Galayo

Symfony , Drupal ,

El autowiring (que podríamos traducir como autocableado) es una función que llegó a Symfony desde su versión 2.8, por lo que realmente lleva siendo compatible con Drupal desde su versión 8.2. Esta semana, en las rama de desarrollo y la primera alpha de Drupal 9.3, se han añadido tests de autowiring al core.

Nos permite definir las dependencias de los servicios automáticamente. En aquellos servicios en cuya definición debíamos indicar estas dependencias en parámetros (que serían los "cables"),  gracias al autowiring podemos evitar pasar estos parámetros. 

Cuando vamos a instanciar un servicio que haga uso del autowire, utilizará el nombre del servicio como pista del tipo que necesita, por lo que sencillamente busca un servicio cuyo id se corresponda exactamente con el que estamos llamando y que no encuentra parametrizado.

Siguiendo el ejemplo de la documentación oficial de Symfony, establecemos en el services.yaml de nuestro módulo el autowiring a true:

services:
    App\Service\TwitterClient:
        autowire: true

Ahora,  estos servicios se pueden utilizar directamente en los controladores:

...
use App\Service\TwitterClient;
class DefaultController extends AbstractController
{
    public function tweet(TwitterClient $twitterClient, Request $request): Response
    {
        $twitterClient->tweet($user, $key, $status);
    }
}

Comentarios

Añadir nuevo comentario