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é.