GlosarioArquitectura

¿Qué es Inyección de dependencias?

La Inyeccion de Dependencias es un patron de diseno donde las dependencias de una clase se proporcionan externamente en lugar de crearlas internamente, y Laravel lo implementa automaticamente a traves del Service Container.

Inyeccion de Dependencias (Dependency Injection)

La inyeccion de dependencias (DI) es un patron fundamental en Laravel. En lugar de que una clase cree sus propias dependencias, estas se "inyectan" desde fuera, normalmente a traves del constructor o de los parametros de un metodo.

Inyeccion en constructor

class OrderService
{
    public function __construct(
        private PaymentGateway $gateway,
        private OrderRepository $repository,
        private NotificationService $notifications,
    ) {}

    public function placeOrder(array $data): Order
    {
        $order = $this->repository->create($data);
        $this->gateway->charge($order->total);
        $this->notifications->send($order);
        return $order;
    }
}

Inyeccion en metodos del controlador

Laravel inyecta automaticamente dependencias en los metodos de los controladores.

class PostController extends Controller
{
    public function store(
        StorePostRequest $request,  // Form Request inyectado
        SlugGenerator $slugger      // Servicio inyectado
    ): RedirectResponse {
        $post = Post::create([
            ...$request->validated(),
            'slug' => $slugger->generate($request->title),
        ]);

        return redirect()->route('posts.show', $post);
    }
}

Ventajas

La inyeccion de dependencias facilita el testing (puedes inyectar mocks), promueve el bajo acoplamiento entre clases y sigue el principio de responsabilidad unica. Laravel resuelve las dependencias automaticamente usando el Service Container y la reflexion de PHP.