首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在EventServiceProvider之外注册事件/监听器?

在EventServiceProvider之外注册事件/监听器是指在Laravel框架中,除了使用EventServiceProvider来注册事件和监听器之外的一种方式。

在Laravel框架中,EventServiceProvider是用来注册事件和监听器的提供者类。通过在该类的$listen属性中定义事件和对应的监听器,可以实现事件的触发和监听。但有时候,我们可能需要在EventServiceProvider之外注册事件和监听器,这种情况下可以使用Event门面类来实现。

Event门面类提供了一系列静态方法来注册事件和监听器。下面是一个示例:

代码语言:txt
复制
use Illuminate\Support\Facades\Event;

Event::listen('eventName', function ($event) {
    // 处理事件
});

在上述示例中,我们使用Event::listen方法来注册一个名为eventName的事件和对应的监听器。当该事件被触发时,注册的监听器将会被调用。

除了使用匿名函数作为监听器,还可以使用类和方法的方式来注册监听器。示例如下:

代码语言:txt
复制
use Illuminate\Support\Facades\Event;
use App\Listeners\EventListener;

Event::listen('eventName', [EventListener::class, 'handle']);

在上述示例中,我们使用[EventListener::class, 'handle']来指定一个类EventListenerhandle方法作为监听器。

通过在代码中使用Event::fire方法来触发事件,示例如下:

代码语言:txt
复制
use Illuminate\Support\Facades\Event;

Event::fire('eventName', $eventData);

在上述示例中,我们使用Event::fire方法来触发名为eventName的事件,并传递了事件数据$eventData

这种在EventServiceProvider之外注册事件和监听器的方式适用于一些特殊情况,例如需要在某个特定的地方注册事件,或者需要动态地注册事件和监听器等。

对于腾讯云相关产品和产品介绍链接地址,可以参考腾讯云官方文档进行了解和查询。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Laravel源码解析之事件系统

我们还是通过官方文档里给出的这个例子来向下分析事件系统的源码实现,不过应用注册事件监听器之前,Laravel应用启动时会先注册处理事件用的 events服务。...应用中注册事件和监听 我们还是通过官方文档里给出的这个例子来向下分析事件系统的源码实现,注册事件监听器有两种方法, App\Providers\EventServiceProvider 有个 listen...数组包含所有的事件(键)以及事件对应的监听器(值)来注册所有的事件监听器,可以灵活地根据需求来添加事件。...App\Providers\EventServiceProvider 类的 boot 方法中注册基于事件的闭包。...方法来启动这些服务,所以Laravel应用中事件监听器注册就发生在 \Illuminate\Foundation\Support\Providers\EventServiceProvide类的 boot

1.1K40
  • 【Laravel系列7.5】事件系统

    事件,则是对这一操作的封装,非常方便好用。 注册事件监听器 首先我们需要创建事件事件对应的监听器。你可以将 事件 看做是一个订阅者,然后利用监听器来对订阅的内容进行处理。...接下来我们需要去 app/Providers/EventServiceProvider.php 的 listen 数组变量中注册这个事件监听器。...然后,就需要去 app/Providers/EventServiceProvider.php 中添加这个事件订阅者的注册,它使用的是 $subscribe 变量。...调用监听器的时候,是将自己这个事件类作为参数传递给监听器。所以我们监听器的 handle() 方法中可以获得事件对象。那么我们的监听器是如何加载的呢?...总结 除了我们演示的最简单的这种事件操作之外,还可以使用事件监听器队列来进行事件的处理,这样就可以实现完全的调用解耦,比如说下订单之后要发送短信、通知信息等这类比较慢的操作,都可以让队列在后台慢慢处理。

    1.7K30

    Laravel事件监听器用法实例分析

    本文实例讲述了Laravel事件监听器用法。分享给大家供大家参考,具体如下: 这里讲述最佳实践方案,分以下步骤: 第一步:注册事件监听器。...EventServiceProvider的linsten数组里面加上事件监听器,键名是事件,键值里面的数组是一个或者多个监听器,意思是当某一个事件发生的时候,传送给数组里面的那些个监听器,执行一些列操作...D:\phpStudy\WWW\BCCKidV1.0\app\Providers\EventServiceProvider.php protected $listen = [ 'App\Events...public $data; public function __construct($data) { $this- data = $data; } 第四步:设置监听器里面需要执行的操作,这里我就直接插入一条记录就行了...event(new SendPhoneCodeEvent($data)); 自己的想法: 1、事件的作用其实可以被一个方法代替,你需要调用的地方引用一下,然后执行这个方法就行了。

    56121

    Laravel 模型事件的应用

    日常处理一些用户操作事件时,我们有时候需要记录下来,方便以后查阅,或者大数据统计。...ObserverLogServiceProvider中运行 ObserverLogServiceProvider 为需要的模型注册事件(我这挺多的,之后大概长这样) 模型注册事件...然后我们触发一些事件(增删改,表的数据就有了) 事件 多对多的关联插入不会出触发模型(比如attach方法) 这时候就需要自己新建事件类来模拟(这里拿分配权限给角色粗略说一下) EventServiceProvider...PermissionRoleEvent 事件监听器PermissionRoleEventLog也继承基类LogBaseServer,这里就是根据传入的数组id遍历,然后创建日志...PermissionRoleEventLog 之后应用事件 事件 更优雅的处理登录注销事件 EventServiceProvider中的subscribe属性绑定好处理的类

    18910

    spring中使用自定义注解注册监听器

    接口回调 监听器本质上就是利用回调机制,某个动作发生前或后,执行我们自己的一些代码。Java语言中,可以使用接口来实现。...,调用 setWorkListener(WorkListener listener)  方法一般称作设置(注册监听器,就是将自己写好的监听代码,设置为动作的监听器。...然而,每次注册监听器时,一般需要写一个类,实现定义好的接口或继承实现接口的类,再重写接口定义的方法即可。因此,聪明的程序员就想简化这个过程,所以就想出了使用注解的方法。...,则是为了一个合适的时机执行解析注解、设置监听器的代码。...接下来的开发中,就可以使用这个注解注册监听器了。

    1.8K110

    基于 Redis 消息队列实现 Laravel 事件监听及底层源码探究

    要建立事件监听器之间的映射关系,保证事件发生时可以通过监听器对其进行处理,需要在 EventServiceProvider 中维护一个监听数组配置: protected $listen = [...注册事件与对应的监听器处理逻辑 Laravel 应用启动过程中,会调用 App\Providers\EventServiceProvider 的 register 方法基于 listen 数组注册事件监听器的映射关系...: 这里的 Event 门面是 Illuminate\Events\EventServiceProvider 的 register 方法中注册的 events 服务的代理: Event::listen... Illuminate\Events\Dispatcher 的 listen 方法中,我们得以窥见事件及对应监听器处理逻辑的注册源码: public function listen($events,...方法将当前事件监听器作为任务类推送到队列: 这里的队列服务实例正是从 EventServiceProvider 注册 events 服务时通过 setQueueResolver 设置的队列服务中解析出来的

    3.5K30

    Laravel 中使用 Event 特性优化代码结构

    Laravel 里,有些事件是由她自动发起的,例如 Model 的 create、save、 update 或者是 delete 操作时,她会分别发起相应的事件,如果我们需要,可以监听这些事件,完成不同的需求...除了她自动发起的事件,我们也可以自己定义我们需要的事件以及监听器应用中使用事件,是解耦应用的好方法,比如注册一位新用户。...里的 $listen 属性中注册事件监听器。...可以看到,通过事件驱动,我们让 UserController 的 store 方法,变得尽可能的少,并且专注于注册用户这件事上,其他逻辑由 UserRegistered 事件监听器来负责完成。...如果有新增加的需求,可是创建一个新的监听器来完成这件事。 当完成了事件监听器的编写与注册之后,我们可以把它放进控制器逻辑。

    69810

    事件驱动编程解救臃肿的代码

    Javascript的事件是像鼠标点击、鼠标悬浮、按下键盘这样的用户动作。Laravel中事件是发生在应用程序中的动作,像邮件通知、记录日志、用户注册、CRUD操作等。...比如说你可以发起一个 userRegistered事件事件处理程序中发送用户验证邮件好让新注册的用户能够验证自己的邮箱。...接下来,事件监听器将在其handle方法中接收到事件实例。handle方法中,我们可以执行响应事件的操作。...register方法的代码尽可能的少并且专注于用户注册这件事上,其它的逻辑由 UserRegistered事件监听器来负责,现在如果说我们想在用户注册后发送短信给新注册的用户,我们所要做的就是创建一个新的事件监听器来监听...以上面的实现为例,通过 register方法我们并不能直观地看到程序创建用户后会向新用户发送一封欢迎邮件,并将其注册到新闻通讯中。

    2K30

    laravel任务调度的介绍(附代码)

    需求是统计每日访问的 IP 数,虽然数据表中有数据,为了演示,新建监听器统计。 记录 IP 这篇文章中介绍了实现了事件/监听器,在此基础上进行扩展。...注册一个新的监听器 app/Providers/EventServiceProvider.php 文件中新添加 CreateUserIpLog 微信图片_20191121160921.png 添加完成后执行...php artisan event:generate,创建好了 app/Listeners/CreateUserIpLog.php 文件; 新建监听器中,记录用户的 IP,使用 Redis 的 Set...handle 方法中编写代码,也可以 kernel.php 中使用 emailOutputTo 方法发送邮件 微信图片_20191121161138.png 设置任务调度 编辑 app/Console.../Kernel.php 的 $commands 微信图片_20191121161228.png schedule 方法中设置定时任务,执行时间为每天凌晨一点 微信图片_20191121161301

    81440

    Laravel 邮箱认证

    { //判断用户提交数据 $this->validator($request->all())->validate(); //创建用户的同时触发注册成功事件...: redirect($this->redirectPath()); } 其中event这里很关键,这里手动触发了 Registered 事件并传入了用户 我们可以 app/Providers.../EventServiceProvider.php 看到注册事件监听器 protected $listen = [ Registered::class => [...源码翻了个遍,相信你应该理解其原理了,接下来我们测试邮件发送功能 .env 中我们将 MATL_DRIVER=smtp 修改为 log这样邮件会保存到 laravel.log文件中 使用其自带的用户注册逻辑与视图...通过命令 php artisan ui:auth 执行迁移文件 php artisan migrate 访问路由 {项目域名}/register 填写相关信息点击注册 laravel.log中发现邮箱认证邮件

    76520

    基于 Redis 消息队列实现邮件通知的异步发送

    此外,和队列任务类和事件监听器类一样,我们为通知类实现了 ShouldQueue 接口,表示会将邮件通知发送操作推送到消息队列异步处理,并且通过 queue 属性设置了队列名称为 notifications...,无需重新编写,底层代码又不好直接修改,这个时候,我们还可以通过监听用户注册事件来处理邮件通知异步发送。...定义用户注册事件监听器 以学院君现在使用的 Laravel Breeze 认证扩展包为例,该扩展包在用户注册成功后会触发 Laravel 底层提供的 Illuminate\Auth\Events\Registered...要在用户注册成功后发送邮件通知,可以监听这个事件并进行处理,为此,我们需要在 App\Providers\EventServiceProvider 注册监听这个事件监听器类,Laravel 已经自带了一个针对该事件监听器类...这里,我们需要为 Registered 新增一个监听器类用于注册成功后发送邮件通知: Registered::class => [ SendEmailVerificationNotification

    3K20

    Supervisor自动管理Laravel事件队列

    首先使用artisan创建一个事件 php artisan make:event DoTest 此时Events/目录下会生成一个DoTest文件 为这个事件创建一个监听器 php artisan make...:listen DoTest 此时Listeners/目录下会生成一个DoTest文件 我们让监听器监听DoTest事件 Providers/EventServiceProvider.php文件中添加配置...'App\Events\DoTest' => [ 'App\Listeners\DoTest', ], 我们来测试一下同步事件 首先我们监听器中加入一行代码...,后续这里都是一些业务逻辑 我们监听器中写入一些数据 public function handle($event) { ¦ $log = storage_path() ....异步事件我们只需要在监听器中继承ShouldQueue即可 并指定一个数据库和队列名称 class DoTest implements ShouldQueue { public $connection

    45940

    Laravel 验证码认证学习记录小结

    注:此处所用的注册等系列功能,均作用于 laravel 自带的用户认证机制 注册验证码 1. composer 安装验证码 composer require "mews/captcha:~3.0" 2...MustVerifyEmailTrait; 为了代码的规范,我们可以接入 larave 自带的邮箱验证接口 Illuminate\Contracts\Auth\MustVerifyEmail,规定模型必须拥有相关的方法,具体方法如下(方法...Request $request) { // 检验用户提交的数据是否有误 $this- validator($request- all())- validate(); // 创建用户同时触发用户注册成功的事件...redirectPath()); } 此方法处理了用户提交表单后的逻辑,我们把重点放在 event(new Registered(user = this- create( 打开 app/Providers/EventServiceProvider.php...文件,此文件的 $listen 属性里我们可以看到注册了 Registered 事件监听器: protected $listen = [ Registered::class = [ SendEmailVerificationNotification

    2.8K51
    领券