The Laravel service container is a powerful tool for managing class dependencies and performing dependency injection. Dependency injection is a fancy phrase that essentially means this: class dependencies are “injected” into the class via the constructor or, in some cases, “setter” methods.

Ability to manage class dependencies on object creation

You define how a object should be created in one point of the application (the binding) and every time you need to create a new instance, you just ask it to the service container, and it will create it for you, along with the required dependencies

For example, instead of creating objects manually with the new keyword:

every time we need YourClass we should pass the dependency manually

you can register a binding on the Service Container:

register a binding on the Service Container

and create an instance through the service container with:

create an instance through the service container with

Binding of interfaces to concrete classes

With Laravel automatic dependency injection, when an interface is required in some part of the app (i.e. in a controller’s constructor), a concrete class is instantiated automatically by the Service Container. Changing the concrete class on the binding, will change the concrete objects instantiated through all your app:

Binding of interfaces to concrete classes

Using the Service Container as a Registry

You can create and store unique object instances on the container and get them back later: using the App::instance method to make the binding, and thus using the container as a Registry

Using the Service Container as a Registry

As a final note, essentially the Service Container -is- the Application object: it extends the Container class, getting all the container’s funtionalities

Are you looking for PHP Laravel Developers? Hire from us: https://infynno.com/hire-developer/