Laravel5.6中event事件的使用

简介

Laravel 事件提供了简单的观察者模式实现,允许你订阅和监听应用中的事件。事件类通常存放在 app/Events 目录,监听器存放在 app/Listeners。如果你在应用中没有看到这些目录,不要担心,它们会在你使用 Artisan 命令生成事件和监听器的时候自动创建。

简单的说下自己的理解

事件是一个工具,使用之后可以将逻辑变得清晰,降低代码的耦合,使用场景例如游戏中的请求发货,发邮件等,下面是主要是根据laravel文档来讲述整个流程

1 注册事件/监听器

首先在lapp/Providers/EventServiceProvider.php文件中去声明调用事件时会被谁监听到,也就是建立事件与监听者的关系,原始文件如下

 [
            'App\Listeners\EventListener',
        ],
        
        //举例 发邮件事件
        'App\Events\sendMail' => [			//你的事件
            'App\Listeners\SendMailEventListener',    //监听器
        ],
    ];

    /**
     * Register any events for your application.
     *
     * @return void
     */
    public function boot()
    {
        parent::boot();

        //
    }
}

2 生成事件/监听器类

执行命令生成event事件和监听器,不必担心事件重复执行命令会重复创建事件

php artisan event:generate

生成的事件在app\Events\SendMail.php目录下,监听器在app\Listeners\SendMailEventListener.php

SendMail.php

email = $email;   //实例化的时候传参
    }

    /**
     * Get the channels the event should broadcast on.
     *
     * @return \Illuminate\Broadcasting\Channel|array
     */
    public function broadcastOn()
    {
        return new PrivateChannel('channel-name');
    }
}

SendMailEventListener.php

email;

		//如果你希望停止事件被传播到其他监听器,可以返回false实现
		return false;
    }
}

3 分发事件

以上我们事件的逻辑已经处理好了,接下来要做的就是触发事件,使用event辅助函数

总结

以上就是一个最简单的事件的创建和使用,如果想看完整的事件教程还是建议大家去看手册,事件的使用其实也挺适合多人开发的,如果一块逻辑包含很多个事件,多人维护的成本是比较大的,我们可以通过看事件以及监听器的逻辑就能理解一个需求,而不一定要去看Controller或者Service。

你可能感兴趣的:(小功能,laravel)