Laravel Utilisation du conteneur de services en tant que conteneur d'injection de dépendances


Exemple

Nous pouvons utiliser le conteneur de services en tant que conteneur d'injection de dépendances en liant le processus de création d'objets avec leurs dépendances en un point de l'application.

Supposons que la création d'un PdfCreator nécessite deux objets en tant que dépendances; chaque fois que nous avons besoin de construire une instance de PdfCreator , nous devons transmettre ces dépendances au constructeur. En utilisant le conteneur de service en tant que DIC, nous définissons la création de PdfCreator dans la définition de la liaison, en prenant directement la dépendance requise à partir du conteneur de services:

App:bind('pdf-creator', function($app) {

    // Get the needed dependencies from the service container.
    $pdfRender = $app->make('pdf-render');
    $templateManager = $app->make('template-manager');

    // Create the instance passing the needed dependencies.
    return new PdfCreator( $pdfRender, $templateManager );    
});

Ensuite, à chaque PdfCreator de notre application, pour obtenir un nouveau PdfCreator , nous pouvons simplement faire:

$pdfCreator = App::make('pdf-creator');

Et le conteneur de service créera une nouvelle instance, avec les dépendances nécessaires pour nous.