Injection de dépendance dans Laravel

Qu’est ce que c’est?

L’injection de dépendance, un mot bine effrayant pour désigner quelque chose de très simple , c’est de passer en paramètre d’une fonction un objet, et ce de façon « automatique », le moteur de Laravel se chargeant d’injecter dans la fonction automatiquement.

 class Mailer
{
    protected $mailer;   
    function __construct(PHPMailer $mailer)
    {
        $this->mailer = $mailer;
    }
    public function sendMail($recipient,$content,$subject){
      //...code envoi email
    }
}

Maintenant supposons que nous soyons dans un e méthode de controller appelée NotifyLogin, qui envoit un mail à l’administrateur lorsque quelqu’un se connecte.

use Illuminate\Http\Request;
use use App\Helper\Mailer;

class LoginController extends Controller
{
    public function __construct(){}
    public function notifyLogin(Request $request, Mailer $mailer){
    $email = $request->email;

    $mailer->sendMail($email,'Un utilisateur s\'est connecté','Connexion');
    
    }
}

On voit que on injecte $request, mais aussi $mailer, il n’est pas besoin d’instancier avec new, Laravel le fait automatiquement pour nous. Ceci est rendu possible parce qu’en amont, le constructeur de la class Mailer a lui-même utilisé l’injection de dépendance pour s’instancier. AInsi de proche en proche le framework arrive à fournir à la méthode notifyLogin le $mailer avec un minimum de travail de notre part, et en plus notre code est plus lisible et mieux organisé.

Retour en haut