laravel里面使用event
模式:大概是通過一個自定義的event,一個handler,還有一個binder,然后用來簡化通知模型
?
生成自定義的event
./artisan make:event MyEvent?
生成自定義的handler
./artisan handler:event MyEventHandler --event=MyEvent?
然后在EventServiceProvider里面添加,可以添加多個,演示就只注冊一個了
protected $listen = ['App\Events\MyEvent' => ['App\Handlers\Events\MyEventHandler',],];?
如果你要多個handler,可以先在EventServiceProvider里面寫好,然后命令
./artisan event:generate?
觸發(fā)event
$aaaa = 'sfsdfsdf'; $response = Event::fire(new App\Events\MyEvent($aaaa));你會發(fā)現(xiàn),在handler的handle方法被觸發(fā),不過看phpdoc,這個方法似乎是void返回,不知道這個response有什么用處
?
--------------------------------------------------------------------------------------------------------------------------------------------
?
注冊event事件組
保留上面的MyEvent,別的不要了
注冊我們的MyEventGroupHandler,這里演示一個event,subscribe方法必須定義
<?php namespace App;class MyEventGroupHandler {/*** Handle user login events.*/public function onMyEvent($event){echo "MyEventGroupHandler";dd($event);}/*** Register the listeners for the subscriber.** @param Illuminate\Events\Dispatcher $events* @return array*/public function subscribe($events){$events->listen('App\Events\MyEvent', 'App\MyEventGroupHandler@onMyEvent');} }?
動態(tài)注冊監(jiān)聽event
$subscriber = new App\MyEventGroupHandler; Event::subscribe($subscriber);?
觸發(fā)事件
$podcast = 'sfsdfsdf'; $response = Event::fire(new App\Events\MyEvent($podcast));?
xdebug發(fā)現(xiàn),MyEventGroupHandler的onMyEvent被斷下
如果原來的myEventHandler也被注冊,也能得到通知。
?
?
發(fā)現(xiàn)兩種方式似乎沒太大區(qū)別,一個靜態(tài)注冊,另一個動態(tài)注冊,留著以后再說吧
轉(zhuǎn)載于:https://www.cnblogs.com/ziyouchutuwenwu/p/4274539.html
總結(jié)
以上是生活随笔為你收集整理的laravel里面使用event的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 苏州新区富士胶片目前薪资如何样?有没有加
- 下一篇: silverligh的数据访问