下面由laravel教程栏目给大家介绍关于laravel事件系统的运行原理,希望对大家有所帮助!
在 EventServiceProvider 里注册(app/Providers/EventServiceProvider.php)
protected $listen = [ Registered::class => [ SendEmailVerificationNotification::class, ], 'AppEventsTest' => [ 'AppListenersEventListener', ], ];
使用命令行来生成事件与监听器
$ php artisan event:generate
此时将生成两个文件
1、App/Events/Test.php(事件)
编辑事件
<?php namespace AppEvents;use AppModelsUser;use IlluminateBroadcastingChannel;use IlluminateBroadcastingInteractsWithSockets;use IlluminateBroadcastingPresenceChannel;use IlluminateBroadcastingPrivateChannel;use IlluminateContractsBroadcastingShouldBroadcast;use IlluminateFoundationEventsDispatchable;use IlluminateQueueSerializesModels;class Test{ use Dispatchable, InteractsWithSockets, SerializesModels; /** * Create a new event instance. * * @return void */ public function __construct($id) { echo '触发事件成功!---------'.$id; $this->id = $id; } /** * Get the channels the event should broadcast on. * * @return IlluminateBroadcastingChannel|array */ public function broadcastOn() { return new PrivateChannel('channel-name'); }}
2、app/Listeners/EmailVerified.php(监听器)
编辑监听器
<?php namespace AppListeners; use AppEventsTest;use IlluminateContractsQueueShouldQueue; use IlluminateQueueInteractsWithQueue; class EventListener{ /** * Create the event listener. * * @return void */ public function __construct() { // } public function handle(Test $event) { echo '监听成功!监听值:'.$event->id; }}
在控制器中触发事件
public function test1(){ event(new Test('11111111')); return '测试事件系统';}
常用命令
php artisan event:generate php artisan make:event UserRegisteredEvent php artisan make:listener SendMailListener --event="UserRegisteredEvent"
相关推荐:最新的五个Laravel视频教程
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END