使用服务容器作为依赖注入容器
我们可以将服务容器用作依赖注入容器,方法是将对象的创建过程与其依赖关系绑定在应用程序的一个点上
让我们假设 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 容器将为我们创建一个新实例以及所需的依赖项。