W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
在命令被派發(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);
});
}]);
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: