Laravel使用event事件_光头强儿的博客-CSDN博客


本站和网页 https://blog.csdn.net/qq_42249896/article/details/115438689 的作者无关,不对其内容负责。快照谨为网络故障时之索引,不代表被搜索网站的即时页面。

Laravel使用event事件_光头强儿的博客-CSDN博客
Laravel使用event事件
光头强儿
于 2021-04-07 20:01:10 发布
578
收藏
分类专栏:
Laravel
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_42249896/article/details/115438689
版权
Laravel
专栏收录该内容
3 篇文章
0 订阅
订阅专栏
目录
一、需求场景二、配置监听三、生成事件及监听文件四、调用事件
一、需求场景
在常见的业务中,比如我们要记录一个接口的最终处理结果记录到日志里,使用event就可以把记录日志的业务逻辑放在一个处理方法中,使得代码中的业务逻辑更明确。
二、配置监听
监听配置文件:app\EventServiceProvider.php
<?php
namespace App\Providers;
use Illuminate\Auth\Events\Registered;
use Illuminate\Auth\Listeners\SendEmailVerificationNotification;
use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider;
use App\Events\TestEvent;
class EventServiceProvider extends ServiceProvider
/**
* The event listener mappings for the application.
* @var array
*/
protected $listen = [
// Registered::class => [
// SendEmailVerificationNotification::class,
// ],
'App\Events\SendEvent' => [
// 'App\Listeners\PayEventListener',
'App\Listeners\SendEventListener',
],
];
/**
* Register any events for your application.
* @return void
*/
public function boot()
parent::boot();
//
其中,$listen属性中:
App\Events\ArticleEvent:是在App\Events目录下新建一个事件(ArticleEvent.php),控制器等的业务逻辑中实例化的是该文件。 App\Listeners\PayEventListener:是在App\Listeners目录下新建一个监听器(PayEventListener.php)
注意:单个事件可以配置多个监听器(处理业务逻辑,如发送邮件,发送短信)。
配置多个监听器的写法:
protected $listen = [
'App\Events\SendEvent' => [
'App\Listeners\SendEventListener',
'App\Listeners\PayEventListener',
],
];
表明一个调用ArticleEvent事件,会执行两个监听器。如果有多个监听器,会按照上方代码快中的数组下标依次进行处理。
三、生成事件及监听文件
执行命令:php artisan event:generate
会在Events目录下生成SendEvent.php,在Listenters目录下生成SendEventListener.php两个文件。
在SendEvent.php(事件)中,用来接收调用端传过来的参数。
<?php
namespace App\Events;
use Illuminate\Broadcasting\Channel;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Broadcasting\PresenceChannel;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Support\Facades\Log;
class SendEvent
use Dispatchable, InteractsWithSockets, SerializesModels;
/**
* Create a new event instance.
* @return void
*/
public function __construct()
/**
* Get the channels the event should broadcast on.
* @return \Illuminate\Broadcasting\Channel|array
*/
public function broadcastOn()
return new PrivateChannel('channel-name');
可以定义一个属性:
<?php
namespace App\Events;
use Illuminate\Broadcasting\Channel;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Broadcasting\PresenceChannel;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Support\Facades\Log;
class SendEvent
use Dispatchable, InteractsWithSockets, SerializesModels;
public $name;
/**
* Create a new event instance.
* @param $username
*/
public function __construct($username)
$this->name = $username;
/**
* Get the channels the event should broadcast on.
* @return \Illuminate\Broadcasting\Channel|array
*/
public function broadcastOn()
return new PrivateChannel('channel-name');
在SendEventListener.php(监听器)中,可以通过$event->name来接收参数,从而进行相应的业务逻辑处理:
<?php
namespace App\Listeners;
use App\Events\SendEvent;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Support\Facades\Log;
class SendEventListener
/**
* Create the event listener.
* @return void
*/
public function __construct()
/**
* Handle the event.
* @param SendEvent $event
* @return void
*/
public function handle(SendEvent $event)
echo $event->name;
Log::info('事件1监听测试'.date('Y-m-d H:i:s'));
四、调用事件
在控制器中,直接实例化事件类就行,也可以传相应的参数。:
public function testEvent(){
// Log::info(date('Y-m-d H:i:s').'我进来了');
$username = '写代码的光头强';
event(new SendEvent());
// Log::info(date('Y-m-d H:i:s').'我结束了');
至此,简单的event事件调用就实现了。以上都是带代码同步进行的。
同步执行顺序:控制器——事件——监听器1——监听器2——控制器结束
如果使用异步,可以配合着队列来用。
end~
光头强儿
关注
关注
点赞
收藏
打赏
评论
Laravel使用event事件
一、需求场景在常见的业务中,比如我们要记录一个接口的最终处理结果记录到日志里,使用event就可以把记录日志的业务逻辑放在一个处理方法中,使得代码中的业务逻辑更明确。二、配置监听监听配置文件:app\EventServiceProvider.php<?phpnamespace App\Providers;use Illuminate\Auth\Events\Registered;use Illuminate\Auth\Listeners\SendEmailVerificationNo
复制链接
扫一扫
专栏目录
深入解析PHP的Laravel框架中的event事件操作
12-19
有时候当我们单纯的看 Laravel 手册的时候会有一些疑惑,比如说系统服务下的授权和事件,这些功能服务的应用场景是什么,其实如果没有经历过一定的开发经验有这些疑惑是很正常的事情,但是当我们在工作中多加思考会发现有时候这些服务其实我们一直都见过。下面就事件、事件监听举一个很简单的例子你就会发现。
​ 这个例子是关于文章的浏览数的实现,当用户查看文章的时候文章的浏览数会增加1,用户查看文章就是一个事件,有了事件,就需要一个事件监听器,对监听的事件发生后执行相应的操作(文章浏览数加1),其实这种监听机制在 Laravel 中是通过观察者模式实现的.
注册事件以及监听器
首先我们需要在 app/Pr
laravel Event事件 和事件处理器(事件监听器)Listeners
...
06-16
1310
概念:
事件是一种常见的观察者模式的应用。
含义:当 (event)... 然后(干) (listener)...
业务逻辑处理:事件event除了定义属性和注入事件参数外不做业务逻辑处理,而是交给事件处理器(即监听器listener)的handle方法来处理具体的业务逻辑。
放置 event 和 listener 文件的位置
app/Events
app/Listeners
定义
用 Artisan 命令可以快速生成一个模板:
php artisan make:event UserEvent
评论 3
您还未登录,请先
登录
后发表或查看评论
Laravel 事件(event)+ 队列(queue)基础
最新发布
华章酱的博客
11-02
297
此时项目中,会多出两个目录 ,Events 和 Listeners。并会自行创建两个文件 , Demo.php 和 DemoListener.php 如下图所示。最后根目录会出现一个,logs.txt文件,内容和上面的一样。以上就是laravel事件的简单实用,仅供参考。
PHP & 理解 Laravel 中 Event & Listener 的作用和使用
cookcyq__的博客
02-20
634
1. Event 和 Listener 是什么、有何作用
Event 与 Listener 两者不可分割,是要结合在一起使用的,触发 一个 Event ,下面绑定的 Listeners 就会跟着触发。
事实上我们用普通函数也可以同样实现 Event & Listener 功能,但设计模式中规范了一个类只做一件事,即采用单一原则。不过业务总是会发生一个类包含多件事,为了能够保持单一原则, Event & Listener 就可以派上用场,所以本质上就是将多个功能抽象提取出来放到 Event
Laravel5.6中event事件的使用
生活不止眼前的苟且
02-27
1294
简介
Laravel 事件提供了简单的观察者模式实现,允许你订阅和监听应用中的事件。事件类通常存放在 app/Events 目录,监听器存放在 app/Listeners。如果你在应用中没有看到这些目录,不要担心,它们会在你使用 Artisan 命令生成事件和监听器的时候自动创建。
简单的说下自己的理解
事件是一个工具,使用之后可以将逻辑变得清晰,降低代码的耦合,使用场景例如游戏中的请求发货,...
Laravel-Event事件
叶子
01-27
156
1.介绍
事件是一种常见的观察者模式的应用。简单的来说,就是当… 干…。这个当… 和干… 在 Laravel 事件中分别对应:当 (event)… 干 (listener)…
2.事件注册
#app\Providers\EventServiceProvider.php
protected $listen = [
Registered::class => [
SendEmailVerificationNotification::class,
],
Laravel 中的event事件概念
weixin_46044420的博客
06-04
1659
概述
事件是一种常见的观察者模式的应用。简单的来说,当 (event)… 干 (listener)…
放置 event 和 listener 文件的位置分别是:
app/Events
app/Listeners
这些目录只有当你使用 Artisan 命令来生成事件和监听器时才会被自动创建。
对于产品经理来说,事件主要用来规范你的业务逻辑,使支线逻辑与主线逻辑独立分拆。对于程序员来说,事件可以让 Controller 变得非常简洁,解耦,可维护。
定义事件 (Event)
一.注册事件和监听器
Larav
Laravel event 事件的简单使用
读万卷书,行万里路
09-26
355
有时候当我们单纯的看 Laravel手册的时候会有一些疑惑,比如说系统服务下的授权和事件,这些功能服务的应用场景是什么,其实如果没有经历过一定的开发经验有这些疑惑是很正常的事情,但是当我们在工作中多加思考会发现有时候这些服务其实我们一直都见过。下面就事件、事件监听举一个很简单的例子你就会发现。
这个例子是关于文章的浏览数的实现,当用户查看文章的时候文章的浏览数会增加1,用户查看文章就是一个事件,有了事件,就需要一个事件监听器,对监听的事件发生后执行相应的操作(文章浏览数加1),其实这种监听机制在 La.
Laravel 中的event事件概念-(注册事件和监听器)
qq_32450471的博客
08-10
247
概述事件是一种常见的的应用。简单的来说,当 (event)… 干 (listener)…放置 event 和 listener 文件的位置分别是:app/Events这些目录只有当你使用 Artisan 命令来生成事件和监听器时才会被自动创建。对于产品经理来说,事件主要用来规范你的业务逻辑,使支线主线逻辑独立分拆。对于程序员来说,事件可以让 Controller 变得非常简洁,解耦,可维护。定义事件 (Event)...
Laravel Event的分析和使用
weixin_45032957的博客
10-01
456
第二部分 追源码
事件服务的注册
laravel中每个服务,需要先注册再启动,其中注册是一定的,启动过程可以没有。事件服务也不例外。但事件服务的注册位置较为特殊,
位于Application.php
protected function registerBaseServiceProviders()
# 事件服务就是在此注册的
# 注意application的register方法实际上调用了服务提供者的register方法
this−>register(newEventServiceProvide
Laravel中Event事件的实现
技术人生的博客
01-14
3710
有时候当我们单纯的看 Laravel 手册的时候会有一些疑惑,比如说系统服务下的授权和事件,这些功能服务的应用场景是什么,其实如果没有经历过一定的开发经验有这些疑惑是很正常的事情,但是当我们在工作中多加思考会发现有时候这些服务其实我们一直都见过。下面就事件、事件监听举一个很简单的例子你就会发现。
​ 这个例子是关于文章的浏览数的实现,当用户查看文章的时候文章的浏览数会增加1,用户查看文章就是一个...
laravel Event 事件
xxpxxpoo8的专栏
08-19
196
要在事件在Providers/EventServiceProvider.php里注册事件和监听器
App\Events\RegisterHost 和App\Events\SendMessage
<?php
namespace App\Providers;
use Illuminate\Auth\Events\Registered;
use Illuminate\Auth\Listeners\SendEmailVerificationNotification;
use Illuminate..
laravel事件event简单实例
渡目成书
05-30
832
在app/providers/EventServiceProvider 中的$listen加入
'App\Events\BlogView' => [
'App\Listeners\BlogViewListener',
],
生成事件类、监听类
php artisan event:generate
事件类BlogView中写入要触发的事件
<...
Laravel框架Event事件实现
柚子味西瓜的博客
06-30
125
1、注册事件以及监听器
首先我们在app/Providers/EventServiceProvider.php文件中定义事件与监听器的映射关系,如下:
/**
* The event listener mappings for the application.
* @var array
*/
protected $listen = [
// 管理员登录后台记录最后登录时间、IP以及累计登录次数
'App\Events\Admin\AdminLoginEvent' =>
Laravel使用事件Event
qq_41445224的博客
01-12
581
第一种创建方式:
这种方式较为传统,按流程一步步创建,如果后续有新的监听,需要手动创建并进行关联
第一步:创建一个事件,如用户登录
php artisan make:event UserLogin
第二步:为事件创建监听,如给管理员发送邮件(一个事件可以有多个监听)
php artisan make:listener EmailAdminUserLogin --event=UserLogin
第三步:系统中注册事件和监听的关系
在 app/Providers/EventServiceProvider
php事件通知,使用 Laravel 的邮件和消息通知作为事件监听者
weixin_26820341的博客
04-12
125
多数情况下,当某个特定事件发生时我们会给用户发生通知,例如当有购买行为时我们会发送发票,或者当用户注册时发送一个欢迎邮件,为了实现这个功能,我们需要这样监听事件:class EventServiceProvider extends ServiceProvider{protected $listen = [NewPurchase::class => [SendInvoice::class,]]...
最简单易懂的laravel事件,这个功能非常的有用
weixin_34279184的博客
08-18
204
先说一下在什么场景会使用这个事件功能。
事情大概是这样的,需求要在用户注册的时候发一些帮助邮件给用户(原本用户在注册之后已经有发别的邮件的了,短信,IM什么的)
原来这个注册的方法也就10多行代码。但是有时候我们为了省事,直接在注册代码后面添加了各种代码。
例如这个注册方法本来是这样的
<?php
namespace App\Htt...
Laravel event
March
10-06
170
介绍
触发和监听事件的一个工具。
当主业务中需要做一些其他附属操作时,附属操作的代码在监听器中实现。
event(事件) listener(监听)
比如,在controller中写event(xxx),表示这里发生了一件这个事儿。
监听器Listener就监听到了这个事儿,然后就根据监听器中写好的代码去处理该事件。
这样做的好处就是解耦了,业务代码中只需要关心主线逻辑,附加的一些需要处理的东西在...
laravel Event 的使用
水墨青花的博客
03-06
1672
在我们web开发中,Laravel Event 的使用极为广泛 , 比如 用户注册之后,需要给用户发一封邮件,给用户增加积分等等下面我们就来探讨一下 Event的使用1. 首先 到 命令行中 执行 php artisan event:generate,可以得到如下结构2. 此时 我们如果需要 增加新的Event,可以直接到 App/Providers/EventServiceProvider...
“相关推荐”对你有帮助么?
非常没帮助
没帮助
一般
有帮助
非常有帮助
提交
©️2022 CSDN
皮肤主题:成长之路
设计师:Amelia_0503
返回首页
光头强儿
CSDN认证博客专家
CSDN认证企业博客
码龄5年
暂无认证
128
原创
7033
周排名
1185
总排名
163万+
访问
等级
1万+
积分
787
粉丝
656
获赞
387
评论
2271
收藏
私信
关注
热门文章
windows系统“文件访问被拒绝,你需要提供管理员权限才能删除此文件”的解决方案
100462
winsetup装系统报:应用系统镜像失败!0x5:拒绝访问
78423
利用cmd命令行远程连接自己服务器
63761
phpmyadmin在宝塔面板里进不去的解决方案
63674
Vue中解析html标签
55285
分类专栏
博主微信:ak47biubiubiu_duang
PHP
7篇
Mysql
15篇
Linux
4篇
Thinkphp
6篇
Laravel
3篇
Elasticsearch
5篇
Java
13篇
Redis
4篇
Cmd
7篇
大前端
15篇
微信开发
4篇
札记
4篇
nginx
1篇
Git
7篇
宝塔面板
5篇
Composer
1篇
编辑器
1篇
Swoole
1篇
正则表达式
1篇
网络协议
2篇
Fastadmin
2篇
我的电脑
2篇
SqlServer
1篇
计算机硬件
5篇
服务器
3篇
第三方厂商
7篇
谷歌浏览器
1篇
第三方接口
5篇
易语言
1篇
最新评论
windows系统“文件访问被拒绝,你需要提供管理员权限才能删除此文件”的解决方案
2201_75959233:
我这个添加那一步进行不了。。。
winsetup装系统报:应用系统镜像失败!0x5:拒绝访问
~825:
是格式化U盘吗
js实现密码框小眼睛的显示与隐藏
悸初~:
你把ClassName换一下不就好了
winsetup装系统报:应用系统镜像失败!0x5:拒绝访问
m0_73253631:
大佬在吗?我这个是系统装错盘了,系统在这盘上,格式化不就无法重启了
windows server2012 R 无网安装.netFramework 3.5
冷秋橙月:
感谢老哥啊,成功了,也是给医院装,内网装这些可是真不容易啊
您愿意向朋友推荐“博客详情页”吗?
强烈不推荐
不推荐
一般般
推荐
强烈推荐
提交
最新文章
Git常用操作
Redis配置哨兵及其机制
Redis搭建主从同步流程及原理
2022年8篇
2021年12篇
2020年30篇
2019年51篇
2018年28篇
目录
目录
分类专栏
博主微信:ak47biubiubiu_duang
PHP
7篇
Mysql
15篇
Linux
4篇
Thinkphp
6篇
Laravel
3篇
Elasticsearch
5篇
Java
13篇
Redis
4篇
Cmd
7篇
大前端
15篇
微信开发
4篇
札记
4篇
nginx
1篇
Git
7篇
宝塔面板
5篇
Composer
1篇
编辑器
1篇
Swoole
1篇
正则表达式
1篇
网络协议
2篇
Fastadmin
2篇
我的电脑
2篇
SqlServer
1篇
计算机硬件
5篇
服务器
3篇
第三方厂商
7篇
谷歌浏览器
1篇
第三方接口
5篇
易语言
1篇
目录
评论 3
被折叠的 条评论
为什么被折叠?
到【灌水乐园】发言
查看更多评论
打赏作者
光头强儿
你的鼓励将是我创作的最大动力
¥2
¥4
¥6
¥10
¥20
输入1-500的整数
余额支付
(余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付
您的余额不足,请更换扫码支付或充值
打赏作者
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额
抵扣说明:
1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。
余额充值