Back to results for “Dependency Injection”
PHP › Dependency Injection & Service Containers

What is a service container, and what problem does it solve when an application has many interdependent classes?

Beginner

Answer

A service container, also called a dependency injection container, is a tool that manages the creation and wiring together of an application's objects, automatically resolving and injecting a class's dependencies when it is needed, which becomes increasingly valuable as an application grows and has many classes depending on each other, since manually constructing every object and its entire chain of dependencies by hand quickly becomes tedious and error prone.
$container->bind(Mailer::class, function () {
    return new Mailer(config('mail.driver'));
});
$mailer = $container->make(Mailer::class);
Real-world example A large application with dozens of interconnected services relies on its framework's service container to automatically construct a fully configured OrderService object, correctly injecting its Mailer, Logger, and Database dependencies without any manual wiring code.

Common follow-ups: How does a service container know which concrete class to use for a given interface?;What is the difference between a service container and a service locator?