使用服務容器作為依賴注入容器
我們可以將服務容器用作依賴注入容器,方法是將物件的建立過程與其依賴關係繫結在應用程式的一個點上
讓我們假設 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 容器將為我們建立一個新例項以及所需的依賴項。