首頁  >  文章  >  後端開發  >  關於Laravel5中的Container, Command Bus, Event

關於Laravel5中的Container, Command Bus, Event

WBOY
WBOY原創
2016-08-08 09:24:431697瀏覽
關於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教程有興趣的朋友有所幫助。
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn