使用服务容器作为依赖注入容器

我们可以将服务容器用作依赖注入容器,方法是将对象的创建过程与其依赖关系绑定在应用程序的一个点上

让我们假设 PdfCreator 的创建需要两个对象作为依赖关系; 每次我们需要构建 PdfCreator 的实例时,我们都应该将这些依赖项传递给 che 构造函数。通过将服务容器用作 DIC,我们在绑定定义中定义 PdfCreator 的创建,直接从服务容器获取所需的依赖关系:

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 );    
});

然后,在我们的应用程序的每一点,要获得一个新的 PdfCreator,我们可以简单地做:

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

Service 容器将为我们创建一个新实例以及所需的依赖项。