服務(wù)容器

2018-02-23 16:24 更新

簡介

Laravel 服務(wù)容器是管理類依賴的強力工具。依賴注入是比較專業(yè)的說法,真正意思是將類依賴透過構(gòu)造器或 「setter」 方法注入。

讓我們來看一個簡單的例子:

<?php namespace App\Handlers\Commands;

use App\User;
use App\Commands\PurchasePodcastCommand;
use Illuminate\Contracts\Mail\Mailer;

class PurchasePodcastHandler {

    /**
     * 一個發(fā)信功能的實現(xiàn)
     */
    protected $mailer;

    /**
     * 創(chuàng)建一個新的實例
     *
     * @param  Mailer  $mailer
     * @return void
     */
    public function __construct(Mailer $mailer)
    {
        $this->mailer = $mailer;
    }

    /**
     * 購買一個播客節(jié)目
     *
     * @param  PurchasePodcastCommand  $command
     * @return void
     */
    public function handle(PurchasePodcastCommand $command)
    {
        //
    }

}

在這個例子中,當播客被購買時, PurchasePodcast 命令處理器需要發(fā)送一封電子郵件。所以,我們將注入一個服務(wù)來提供這個能力。當這個服務(wù)被注入以后,我們就可以輕易地切換到不同的實現(xiàn)。當測試我們的應(yīng)用程序時,我們同樣也可以輕易地「模擬」,或者創(chuàng)建一個虛擬的發(fā)信服務(wù)實現(xiàn),來幫助我們進行測試。

如果要創(chuàng)建一個強大并且大型的應(yīng)用,或者對 Laravel 的內(nèi)核做貢獻,首先必須對 Laravel 的服務(wù)容器進行深入了解。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號