laravel里面使用event
模式:大概是通過(guò)一個(gè)自定義的event,一個(gè)handler,還有一個(gè)binder,然后用來(lái)簡(jiǎn)化通知模型
?
生成自定義的event
./artisan make:event MyEvent?
生成自定義的handler
./artisan handler:event MyEventHandler --event=MyEvent?
然后在EventServiceProvider里面添加,可以添加多個(gè),演示就只注冊(cè)一個(gè)了
protected $listen = ['App\Events\MyEvent' => ['App\Handlers\Events\MyEventHandler',],];?
如果你要多個(gè)handler,可以先在EventServiceProvider里面寫(xiě)好,然后命令
./artisan event:generate?
觸發(fā)event
$aaaa = 'sfsdfsdf'; $response = Event::fire(new App\Events\MyEvent($aaaa));你會(huì)發(fā)現(xiàn),在handler的handle方法被觸發(fā),不過(guò)看phpdoc,這個(gè)方法似乎是void返回,不知道這個(gè)response有什么用處
?
--------------------------------------------------------------------------------------------------------------------------------------------
?
注冊(cè)event事件組
保留上面的MyEvent,別的不要了
注冊(cè)我們的MyEventGroupHandler,這里演示一個(gè)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');} }?
動(dòng)態(tài)注冊(cè)監(jiān)聽(tīng)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被斷下
如果原來(lái)的myEventHandler也被注冊(cè),也能得到通知。
?
?
發(fā)現(xiàn)兩種方式似乎沒(méi)太大區(qū)別,一個(gè)靜態(tài)注冊(cè),另一個(gè)動(dòng)態(tài)注冊(cè),留著以后再說(shuō)吧
轉(zhuǎn)載于:https://www.cnblogs.com/ziyouchutuwenwu/p/4274539.html
總結(jié)
以上是生活随笔為你收集整理的laravel里面使用event的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 苏州新区富士胶片目前薪资如何样?有没有加
- 下一篇: silverligh的数据访问