使用服務容器作為依賴注入容器

我們可以將服務容器用作依賴注入容器,方法是將物件的建立過程與其依賴關係繫結在應用程式的一個點上

讓我們假設 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 容器將為我們建立一個新例項以及所需的依賴項。