關於bind方法:- 這兩個綁定相同,在$app->make()的時候,都回傳一個新的實例
,如下,第一個參數傳入數組,key為別名,value為接口名 $this->app->bind('App\DAO\UserDAO',function(){
return new UserDAOImpl();
});
$this->app->bind('App\DAO\UserDAO','App\DAO\Impl\UserDAOImpl');
-
第三個參數為true Bus
本質是相關方法的呼叫集合
-
產生一個Command
$this->app->bind(['dao.user' => 'App\DAO\UserDAO'],'App\DAO\Impl\UserDAOImpl');
這時會在appCommands下生產一個FirstCommand類,其中的Ihandlele
- 呼叫Command在Controller中呼叫dispatch方法,如下。 預設的Controller擁有
`trait DispatchesCommands`
所以擁有dispatch方法。下面的命令在controller中執行,就會執行FirstCommand::handle()中的內容
$this->app->bind(['dao.user' => 'App\DAO\UserDAO'],'App\DAO\Impl\UserDAOImpl', true);
-
隊列Command
php artisan make:command PurchasePodcast --queued這個
`--queued` 參數,會增加
`IlluminateContractsQueueShouldBeQueued`
介面和`SerializesModels`
trait 。 這個介面沒有任何方法,只是一個標記(instanceof)。
-
管道命令(TODO)
Event事件
-
生成事件類別在
`EventServiceProvider`rerrle命令中的listen>
`php artisan event:generate` 就能根據$listen中的內容產生對應文件,且不會覆寫已產生的文件。
- 處理事件事件註冊時在`EventServiceProvider`
之中的boot完成的。 Hanlder中的handle方法接受一個FirstEvent參數,handle為處理方法。
-
觸發事件
php artisan make:command FirstCommand
- 佇列事件
加上
`IlluminateContractsQueue佇列事件
加上
`IlluminateContractsQueue佇列事件
加上
`IlluminateContractsQueueS`ueS`eue. trait, 可以在處理事件之中使用
$this->dispatch(new FirstCommand());
等方法把任務刪除,重置等等。 -
訂閱者訂閱者本質還是一個handler,必須實作subscribe($event)方法。
protected $listen = [
'App\Events\FirstEvent' => [
'App\Handlers\Events\FirstEventHandler',
],
];
如何訂閱呢? <span style="white-space:pre"> </span>\Event::fire(new FirstEvent());
//or use the helper function
event(new FirstEvent());
搞定了。 一個Event可以對應多個Handler,Handler的執行順序和綁定順序一致。
一個Subscriber可以綁定多個事件
以上就介紹了關於Laravel5中的Container, Command Bus, Event,包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。