Dominando el contenedor de inyección de dependencias (IOC) de Laravel

Jeff
Styde.net
Published in
2 min readJan 16, 2018

El contenedor de inyección de dependencias de Laravel (IOC container) es básicamente la espina dorsal de este maravilloso framework de PHP, por lo tanto es un tema que debes conocer a fondo si trabajas con Laravel.

El contenedor de servicios de Laravel es una poderosa herramienta para administrar dependencias de clases y realizar inyecciones de dependencia. La inyección de dependencia es una frase sofisticada que básicamente significa esto: las dependencias de clase se “inyectan” en la clase a través del constructor o, en algunos casos, de los métodos “setter”.
source: https://laravel.com/docs/5.5/container

Por ejemplo, utilizando el IOC puedes “inyectar” clases (dependencias) a través del constructor de un controlador; al momento que dicho controlador sea ejecutado el IOC se encargará de resolver dicha instancia.

<?php

namespace App\Http\Controllers;

use App\User;
use App\Repositories\UserRepository;
use App\Http\Controllers\Controller;

class UserController extends Controller
{

protected $users;


public function __construct(UserRepository $users)
{
$this->users = $users;
}
}

En este caso Laravel será capaz de instanciar la clase UserRepository y asignará a la variable $users .

¿Eso es todo?

Bueno, aunque esto ya es demasiado, no es todo. Estas son algunas de las cosas que puedes hacer con el Contenedor de Inyección de Dependencias de Laravel:

  • Atar y resolver clases
  • Autowiring (instanciar una clase sin recibir instrucciones)
  • Enlazar clases de forma manual
  • Enlazar un “singleton”
  • Agregar un alias a una clase
  • Uso de inyección de dependencias en métodos
  • Instanciar una clase a través de una interfaz

Puedes ver estos conceptos con más detalle en este artículo:

Contenedores de inyección de dependencias a profundidad

Si quieres dominar por completo este tema, que te parecería aprender cómo crear un contenedor de inyección de dependencias sin ayuda de ningún framework.

Aprende desde cero el concepto y la implementación del patrón de inyección de dependencias creando tu propio contenedor de inyección de dependencias, similar al que tiene Laravel.

--

--

Jeff
Styde.net

Web developer. Always learning... #fullstack #less #sass #php #laravel #javascript #VueJs