NIUCLOUD是一款SaaS管理后台框架多应用插件+云编译。上千名开发者、服务商正在积极拥抱开发者生态。欢迎开发者们免费入驻。一起助力发展! 广告
在命令被派发到处理器之前,你也可以将它通过"命令管道"传递到其他类去。命令管道操作上如 HTTP 中间件,除了是专门来给命令用的,例如,一个命令管道能够在数据库事务处理期间包装全部的命令操作,或者仅作为执行纪录。 要将管道添加到 bus,只要从App\Providers\BusServiceProvider::boot 方法调用调用员的pipeThrough 方法: `$dispatcher->pipeThrough(['UseDatabaseTransactions', 'LogCommand']);` 一个命令管道被定义在 handle 方法,就如个中间件: ~~~ ~~~ class UseDatabaseTransactions { public function handle($command, $next) { return DB::transaction(function() use ($command, $next) { return $next($command); }); } } ~~~ ~~~ 命令管道是透过 IoC 容器来达成,所以请自行在构造器类型提示所需的依赖。 你甚至可以定义一个 闭包 来作为命令管道: ~~~ ~~~ $dispatcher->pipeThrough([function($command, $next) { return DB::transaction(function() use ($command, $next) { return $next($command); }); }]); ~~~ ~~~