• Laravel5.1 事件--Event


    Event顾名思义就是事件的意思,在实际开发中 当用户做了某些动作或操作的时候 我们需要监听这些事件来做相应的处理。

    比如说用户注册一个账户我们需要往用户的邮箱中发验证信息这种操作。

    我们可以通过artisan命令来生成一个event和一个listener:

    php artisan make:event  CustomEvent
    php artisan make:listener  CustomListener

    但是有一个更加便利的方法,首先来到这个文件下:app/Providers/EventServiceProvider.php

    观察这个数组:

        protected $listen = [
            'AppEventsSomeEvent' => [
                'AppListenersEventListener',
            ],
        ];

    我们可以在这个数组中写我们想要生成的Event和Listener,一个Event可以对应多个Listener,下面来写一个例子:

        protected $listen = [
            'AppEventsUserSignUp' => [
                'AppListenersSendEmail',
                'AppListenersSaveUser',
            ],
        ];

    编辑完我们想要的事件和监听者后,使用artisan命令来生成他们:

    php artisan event:generate

    生成的Evnet在app/Event中 而Listener在app/Listener中

    触发事件

    进入到我们刚刚创建的Event中:

    class UserSignUp extends Event
    {
        use SerializesModels;
    
        public $user;
        /**
         * Create a new event instance.
         *
         * @return void
         */
        public function __construct(User $user)
        {
            // 可以在构造方法中声明要传入的数据 这里以User为例
            $this->user = $user;
        }
    
        /**
         * Get the channels the event should be broadcast on.
         *
         * @return array
         */
        public function broadcastOn()
        {
            return [];
        }

    然后进入到Listener中写处理的逻辑:

    class SendEmail
    {
        protected $mail;
        /**
         * Create the event listener.
         *
         * @return void
         */
        public function __construct(Mail $mail)
        {
            // 可以在这里依赖注入你需要的功能 这里以Email为例
            $this->mail = $mail;
        }
    
        /**
         * Handle the event.
         *
         * @param  UserSignUp  $event
         * @return void
         */
        public function handle(UserSignUp $event)
        {
            // 在这里完成要操作的业务逻辑,简单测试一下
            dump('send Email to ' . $event->user->name);
        }
    }

    现在只差触发这个事件了,触发事件可以使用全局帮助函数:

    Route::get('/', function () {
        $user = AppUser::findOrFail(0);
        // 这样就触发了一条Event
        event(new AppEventsUserSignUp($user));
    });
  • 相关阅读:
    一步一步配置 Dell OME 监控 Dell 服务器硬件报警
    比较详细的介绍zabbix监控tomcat
    Docker-03 docker 加速器--DaoCloud 1.0
    Docker-02 无人值守安装 docker
    Docker-01 无人值守升级 CentOS 6.x 系统内核到 3.10.x 长期支持版
    一个awk if 嵌套 if 的脚本
    CentOS 安装 JDK
    zTree默认勾选指定ID并执行事件
    数据库游标的使用
    js进度条实现
  • 原文地址:https://www.cnblogs.com/Alex-sk/p/6746682.html
Copyright © 2020-2023  润新知