Backend Development 4 min read

Laravel Dependency Injection: Creating Services and Using Constructor or Method Injection

This guide explains how Laravel's service container enables dependency injection, walks through creating a GreetingService, and demonstrates both constructor and method injection techniques for injecting services into controllers, including code examples and a comparison of the two approaches.

php中文网 Courses
php中文网 Courses
php中文网 Courses
Laravel Dependency Injection: Creating Services and Using Constructor or Method Injection

Laravel's dependency injection mechanism simplifies dependency management by injecting required services instead of instantiating them directly; the framework's service container automatically resolves these dependencies, enhancing code clarity and maintainability.

Steps to perform this operation:

1. Create a app/Services directory (if it does not exist) and add a GreetingService.php file inside it, resulting in the path app/Services/GreetingService.php .

2. In a controller file, import and use GreetingService as shown below:

use App\Services\GreetingService;

There are two primary ways to inject the service into a controller:

Constructor injection: pass the service as a constructor argument.

Method injection: pass the service directly as a method argument.

1. Constructor injection:

In the following example, the showGreeting method calls the greet method of GreetingService . This means WelcomeController depends on GreetingService to produce output. To use the greet method, an instance of GreetingService ( $objGS ) is passed to the WelcomeController constructor, which is known as constructor injection.

2. Method injection:

Unlike constructor injection, this approach passes the GreetingService object directly as a parameter to the showGreeting method.

Comparison of Constructor and Method Injection

If only a single method requires a service, method injection is convenient. However, when multiple methods need the same service, constructor injection is preferable because the service is declared once in the constructor and stored as a protected property, making it accessible to all methods.

Additional learning resources:

Java learning materials

C language learning materials

Frontend learning materials

C++ learning materials

PHP learning materials

backend developmentphpdependency injectionLaravelService Container
php中文网 Courses
Written by

php中文网 Courses

php中文网's platform for the latest courses and technical articles, helping PHP learners advance quickly.

0 followers
Reader feedback

How this landed with the community

login Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.