關於Laravel5中的Container, Command Bus, Event

WBOY
發布: 2016-08-08 09:24:43
原創
1618 人瀏覽過
關於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', ], ];
登入後複製
如何訂閱呢?
 \Event::fire(new FirstEvent()); //or use the helper function event(new FirstEvent());
登入後複製
搞定了。一個Event可以對應多個Handler,Handler的執行順序和綁定順序一致。
一個Subscriber可以綁定多個事件
以上就介紹了關於Laravel5中的Container, Command Bus, Event,包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。
相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!