当前位置: 首页 > wzjs >正文

ppt制作平台无锡seo网站管理

ppt制作平台,无锡seo网站管理,wordpress怎么集成码支付,做网站如何避免侵权首先知道事件是什么 1.事件的概念 事件(Event)是 Laravel 中实现观察者模式的一种机制,它允许应用程序中的不同部分进行松耦合的通信。 通俗一点就是,发生在应用程序中的动作或者事情。例如: 用户注册成功后,需要发邮件&#…

首先知道事件是什么

1.事件的概念

事件(Event)是 Laravel 中实现观察者模式的一种机制,它允许应用程序中的不同部分进行松耦合的通信。

通俗一点就是,发生在应用程序中的动作或者事情。例如:

  1. 用户注册成功后,需要发邮件,发短信,初始化数据;
  2. 订单支付成功后,库存处理,消息发送,订单处理;
  3. 文章发布成功后,用户的积分,通知审核者,推送阅读者;
  4. 。。。。

类似以上这些动作或事情,都可以看着一个个单独的事件。

2.事件组成部分

  1. 事件类(Event):承载事件相关数据的对象

  2. 事件触发:在代码中明确触发事件的位置

  3. 监听器(Listener):响应事件并执行处理的类

3.怎么工作

触发事件 -> 创建事件对象 -> 事件分发器 -> 匹配监听器 -> 执行监听器逻辑

4.事件特点

  1. 解耦性:将某些动作和主体功能的逻辑拆分,例如将用户注册和发邮件拆分开,用户注册后,直接触发邮件事件。根本不需要知道怎么发邮件的。两个互不影响。
  2. 可扩展性:一个事件支持多个监听器,例如用户注册成功后,原有一个监听器去发邮件,如果现在有个发短信的需求,直接添加一个新的监听器即可,不需要去修改原有的代码。减少出错率
  3. 队列支持:监听器可以同步执行,也可以异步执行。例如发邮件,处理大量的耗时任务,可以直接在异步里面执行,不影响主体功能

数据状态变更 事件开发

1.创建事件

使用 Artisan 命令创建一个新事件:

php artisan make:event MyCustomState

php artisan make:event MyCustomState
app/Events 目录下会自动生成一个事件类。编辑一下

<?phpnamespace App\Events;use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Queue\SerializesModels;class MyCustomState
{use Dispatchable, SerializesModels;public $data;/*** 创建一个新的事件实例** @param mixed $data 需要传递的数据* @return void*/public function __construct($data){$this->data = $data;}
}

__construct里面进行赋值处理 $this->data = $data;

2.创建监听器

使用命令行创建监听器

 php artisan make:listener ProcessMyCustomState --event=MyCustomState

php artisan make:listener ProcessMyCustomState --event=MyCustomState
编辑监听器文件 app/Listeners/ProcessMyCustomState .php:

注意,处理这个事件的逻辑就在监听器里面实现。例如发短信,发邮件,等等

<?phpnamespace App\Listeners;use App\Events\MyCustomState;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Queue\InteractsWithQueue;class ProcessMyCustomState 
{/*** 处理事件** @param MyCustomEvent $event* @return void*/public function handle(MyCustomState $event){//接收事件的数据$data = $event->data;// 例如:记录日志、发送邮件、处理数据等\Log::info('事件已处理,数据:', ['data' => $data]);// 自我表现的时候到了,开始肆无忌惮的搭建屎山工程// ........}
}

3.注册事件和监听器

目前事件和监听器是两个独立的类,接下来要让监听器监听事件。也就是所谓的注册对应关系

编辑 app/Providers/EventServiceProvider.php 添加以下代码

protected $listen = [MyCustomState::class => [ProcessMyCustomState::class,],
];

请注意

MyCustomState::class 对应的是一个数组,也就是里面可以有多个监听器,即多个监听器监听一个事件

例如发短信,发邮件,等等。每个独立实现可以为一个监听器

这样就建立关系了。接下来只需要去触发这个事件即可

4.在控制器中触发事件

编辑一个控制器文件

<?phpnamespace App\Http\Controllers;use App\Events\MyCustomEvent;
use Illuminate\Http\Request;class MyController extends Controller
{public function triggerEvent(Request $request){// 一些业务逻辑...$eventData = ['user_id' => auth()->id(),'action' => 'custom_action','timestamp' => now(),];// 触发事件event(new MyCustomState($eventData));// 或者也可以使用辅助函数// MyCustomState::dispatch($eventData);return response()->json(['message' => '事件已触发']);}
}

可以用 event(new MyCustomState($eventData)); 或者 MyCustomState::dispatch($eventData); 触发事件

以上就是正常一个事件的开发流程了。

如果监听器的逻辑较为复杂或者非常耗时,那么建议这个监听器进行异步执行。可以让监听器实现 ShouldQueue 接口

5.监听器队列处理(视情况而定)

简单说一下,什么情况使用队列监听器

  1. 耗时操作:发送邮件、生成报表、处理图片等

  2. 第三方API调用:支付网关、短信服务等

  3. 非关键操作:日志记录、数据分析等不需要即时完成的操作

  4. 高流量场景:需要快速响应用户而不等待后台处理完成

监听器实现 ShouldQueue 接口
use Illuminate\Contracts\Queue\ShouldQueue;class ProcessMyCustomState implements ShouldQueue
{use InteractsWithQueue;// 指定队列连接public $connection = 'ProcessMyCustomStateQueue';// 指定队列名称public $queue = 'emails';// 延迟处理(秒)public $delay = 60;// 最大尝试次数public $tries = 3;// 超时时间(秒)public $timeout = 30;public function handle(MyCustomEvent $event){// 处理事件逻辑$data = $event->data;// 例如:记录日志、发送邮件、处理数据等\Log::info('事件已处理,数据:', ['data' => $data]);// 此处就是异步处理的逻辑// .....}
}
运行队列进程

如果使用队列,那么就必须运行队列的进程,这样才能及时处理到监听器的逻辑。

如果对队列不熟悉的同学,我后面会写一篇关于队列的文章,让大家学习一下

命令行启动队列

php artisan queue:work  --queue=ProcessMyCustomStateQueue

启动后,当事件触发时,命令行会显示进程处理日志
php artisan queue:work  --queue=ProcessMyCustomStateQueue

总结

这就是在 Laravel 中实现事件和监听器的完整流程。

这种模式有助于解耦代码,使得业务逻辑更加清晰,也便于后期维护和扩展。

你可以根据需要创建多个监听器来监听同一个事件,或者为事件添加更多的属性和方法。

http://www.dtcms.com/wzjs/589426.html

相关文章:

  • 苏州做网站需要多少钱上位机软件开发教程
  • 男女怎么做那个视频网站网站导航下拉菜单代码
  • 网页设计尺寸怎么设计惠州seo计费
  • 西安建设学院网站首页游戏网官网
  • 网站备案换接入商哪些网站可以做直播
  • 这些网站涵盖了不同的主题和类型网站不允许上传文件
  • 悦阁网站开发旗舰店塘沽网站优化
  • 开发网站制作做购物网站能赚钱吗
  • 长春seo网站优化图片制作表情包
  • 网站建设入门基础西安做北郊做网站
  • 常用于做网站的软件页面设计模板网站
  • 微网站方案如何做网站卖家具
  • 门户网站 cms租门面做网站
  • 免费书画网站怎么做的建网络商城网站吗
  • 门户网站优化怎么做wordpress 改为中文字体
  • wordpress本站只对会员开放wordpress提高浏览量
  • 网站怎么做筛选网站建设北京海淀
  • 网站被挂黑链了微盟商户助手
  • 海外网站加速器下载站长工具亚洲高清
  • 建设网站怎么克隆建设银行个人客户
  • 深圳做网站多少网站建设定义
  • 建设银行信用卡积分兑换话费网站如何做公众号影视网站
  • 怎么帮公司做网站建设如何做企业黄页网站
  • 搬瓦工 做网站wordpress被挂黑链
  • 如何找专业的网站建设公司手机制作简历模板免费
  • 站内关键词排名软件德州公司做网站
  • 枣阳网站开发杭州建设主管部门的网站
  • 微网站开发微网站建设建设工程专业承包交易中心网站
  • 深圳做网站收费wordpress侧边栏文章目录
  • 网站平台建设公司经营范围广州市医院网站建设