解析Laravel事件系统的运行原理

下面由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
喜欢就支持一下吧
点赞12 分享