命令管道

2018-02-24 15:52 更新

在命令被派發(fā)到處理器之前,你也可以將它通過"命令管道"傳遞到其他類去。命令管道操作上如 HTTP 中間件,除了是專門來給命令用的,例如,一個(gè)命令管道能夠在數(shù)據(jù)庫事務(wù)處理期間包裝全部的命令操作,或者僅作為執(zhí)行紀(jì)錄。

要將管道添加到 bus,只要從App\Providers\BusServiceProvider::boot 方法調(diào)用調(diào)用員的pipeThrough 方法:

$dispatcher->pipeThrough(['UseDatabaseTransactions', 'LogCommand']);

一個(gè)命令管道被定義在 handle 方法,就如個(gè)中間件:

class UseDatabaseTransactions {

    public function handle($command, $next)
    {
        return DB::transaction(function() use ($command, $next)
        {
            return $next($command);
        });
    }

}

命令管道是透過 IoC 容器來達(dá)成,所以請(qǐng)自行在構(gòu)造器類型提示所需的依賴。

你甚至可以定義一個(gè) 閉包 來作為命令管道:

$dispatcher->pipeThrough([function($command, $next)
{
    return DB::transaction(function() use ($command, $next)
    {
        return $next($command);
    });
}]);
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)