iis服务器助手广告
返回顶部
首页 > 资讯 > 精选 >Laravel事件系统怎么用
  • 877
分享到

Laravel事件系统怎么用

2023-06-25 11:06:42 877人浏览 泡泡鱼
摘要

这篇文章主要介绍Laravel事件系统怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Laravel 事件系统用法总结Laravel 的事件提供了一个简单的观察者实现,能够订阅和监听应用中发生的各种事件。事件类保

这篇文章主要介绍Laravel事件系统怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

Laravel 事件系统用法总结

Laravel 的事件提供了一个简单的观察者实现,能够订阅和监听应用中发生的各种事件。事件类保存在 app/Events 目录中,而这些事件的的监听器则被保存在 app/Listeners 目录下。这些目录只有当你使用 Artisan 命令来生成事件和监听器时才会被自动创建。

事件机制是一种很好的应用解耦方式,因为一个事件可以拥有多个互不依赖的监听器。例如,如果你希望每次订单发货时向用户发送一个 Slack 通知。你可以简单地发起一个 OrderShipped 事件,让监听器接收之后转化成一个 Slack 通知,这样你就可以不用把订单的业务代码跟 Slack 通知的代码耦合在一起了。

生成一个事件类

比如通过 artisan 命令生成一个 UserLogin 事件:

PHP artisan make:event UserLogin

在 app/Events 中就会自动生成一个 UserLogin.php 文件,内容不多,如下:

<?php namespace App\Events; use Illuminate\Broadcasting\Channel;use Illuminate\Queue\SerializesModels;use Illuminate\Broadcasting\PrivateChannel;use Illuminate\Broadcasting\PresenceChannel;use Illuminate\Broadcasting\InteractsWithSockets;use Illuminate\Contracts\Broadcasting\ShouldBroadcast; class UserLogin{    use InteractsWithSockets, SerializesModels;         public function __construct()    {        //    }         public function broadcastOn()    {        return new PrivateChannel('channel-name');    }}

定义监听器

一个事件可以被一个或多个监听器监听,也就是观察者模式,我们可以定义多个监听器,当这个事件发生,执行一系列逻辑。

在 EventServiceProvider 的 $listen 中可以定义事件和监听器,如下:

protected $listen = [    'App\Events\UserLogin' => [        'App\Listeners\DoSomething1',        'App\Listeners\Dosomething2',    ],];

然后执行 artisan 命令,就可以自动在 app/Listeners 目录生成监听器。

php artisan event:generate

可以看到 app/Listeners 目录多了 DoSomething1.php 和 DoSomething2.php 两个文件,我们看看其中一个内容:

<?php namespace App\Listeners; use App\Events\UserLogin;use Illuminate\Queue\InteractsWithQueue;use Illuminate\Contracts\Queue\ShouldQueue; class DoSomething1{        public function __construct()    {        //    }         public function handle(UserLogin $event)    {        info('do something1');    }}

在两个监听器的 handle 方法中我们打印一个日志测试一下,如代码 handle 方法所示。

分发和触发事件

我们在某个控制器的方法中来分发事件,也就是触发事件,看监听器是否正常工作。

就是一句话:

event(new UserLogin());

然后我们请求这个控制器,观察日志,发现打印了日志:

[2018-06-17 10:04:29] local.INFO: do something1 [2018-06-17 10:04:29] local.INFO: do something2

那么这个事件-监听机制就正常工作了。

队列异步处理

如果某个监听器需要执行的操作比较慢,可以放到消息队列进行异步处理。

比如把上面的 DoSomething1 改成需要放入队列的,只需要 implements ShoulQueue 接口。

class DoSomething1 implements ShouldQueue

也可以指定队列驱动,如下代码。

    public $connection = 'redis';         public $queue = 'listeners';

我们再次执行控制器方法。

日志里没有打印 do something1,只有 do something2,但是在 Redis 队列里发现了一个名为 queues:default 的列表。

{"job":"Illuminate\\Events\\CallQueuedHandler@call","data":{"class":"App\\Listeners\\DoSomething1","method":"handle","data":"a:1:{i:0;O:20:\"App\\Events\\UserLogin\":1:{s:6:\"socket\";N;}}"},"id":"3D7VDUwueYGtUvsazicWsifwWQxnnLID","attempts":1}

这个时候需要使用 php artisan queue:work 执行队列任务,才是真正执行 DoSomething1 这个监听器的 handle 方法。

以上是“Laravel事件系统怎么用”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网精选频道!

--结束END--

本文标题: Laravel事件系统怎么用

本文链接: https://www.lsjlt.com/news/304144.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Laravel事件系统怎么用
    这篇文章主要介绍Laravel事件系统怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Laravel 事件系统用法总结Laravel 的事件提供了一个简单的观察者实现,能够订阅和监听应用中发生的各种事件。事件类保...
    99+
    2023-06-25
  • Laravel事件系统的运行原理是什么
    本篇内容介绍了“Laravel事件系统的运行原理是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在 EventServiceProvid...
    99+
    2023-06-22
  • Hibernate事件系统怎么实现
    本篇内容主要讲解“Hibernate事件系统怎么实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Hibernate事件系统怎么实现”吧!我们都知道应用程序能够响应Hibernate内部产生的特...
    99+
    2023-06-17
  • 怎么监控Linux文件系统事件
    这篇文章将为大家详细讲解有关怎么监控Linux文件系统事件,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。历史简介在 inotify 之前有 dnotify。不幸的是,dnotify 有局限性,用户需要更好...
    99+
    2023-06-16
  • 怎么使用laravel-websockets实现广播系统
    本篇内容介绍了“怎么使用laravel-websockets实现广播系统”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!创建项目在 Apach...
    99+
    2023-07-04
  • Laravel模型事件如何使用
    这篇“Laravel模型事件如何使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Laravel模型事件如何使用”文章吧。我...
    99+
    2023-07-04
  • Android怎么开发Input系统触摸事件分发
    本篇内容介绍了“Android怎么开发Input系统触摸事件分发”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!引言Input系统: Inpu...
    99+
    2023-07-05
  • Java项目中怎么使用System.currentTimeMillis()实现获取系统事件
    Java项目中怎么使用System.currentTimeMillis()实现获取系统事件?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。System.currentTimeMi...
    99+
    2023-05-31
    system.currenttimemillis() java
  • 操作系统异常事件簿:揭秘操作系统中的幽灵事件
    异常事件簿:记录操作系统故障 操作系统异常事件簿是一个重要的日志文件,用来记录操作系统事件,包括错误、警告和信息消息。异常事件簿允许管理员诊断和解决系统问题,特别是当问题难以重现或难以理解时。 异常事件簿中记录的事件可能来自各种来源,包括...
    99+
    2024-04-02
  • Laravel模型事件和模型事件在Trait中如何使用
    这篇文章主要介绍“Laravel模型事件和模型事件在Trait中如何使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Laravel模型事件和模型事件在Trait中如何使用”文章能帮助大家解决问题。...
    99+
    2023-07-05
  • 怎么查看Cacti系统的日志和事件记录
    要查看Cacti系统的日志和事件记录,可以按照以下步骤操作: 登录到Cacti系统的Web界面。 在左侧导航栏中找到并点击“Con...
    99+
    2024-04-02
  • linux如何显示系统事件
    ...
    99+
    2024-04-02
  • 详解Laravel模型事件和模型事件在Trait中的使用
    目录模型事件事件类型boot 方法和事件注册boot 在 traits 中的使用boot(启动) 和 initialize(初始化)Boot(启动)Initialize (初始化)模...
    99+
    2023-03-07
    Laravel模型事件Trait Laravel Trait
  • Laravel中用Observer事件致Redis队列异常问题怎么解决
    本篇内容主要讲解“Laravel中用Observer事件致Redis队列异常问题怎么解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Laravel中用Observer事件致Redis队列异常问...
    99+
    2023-06-21
  • ChitGPT用Laravel写一个答题系统
    好的,下面是一个简单的答题系统的Laravel代码。 首先,我们需要创建一个Question模型和一个Answer模型,用于存储问题和答案的数据。我们可以使用以下命令来创建这两个模型: 复制php artisan make:model Qu...
    99+
    2023-09-01
    php laravel 开发语言
  • 详解CocosCreator系统事件是怎么产生及触发的
    目录环境概要模块作用涉及文件源码解析CCGame.jsCCInputManager.js事件是怎么从引擎到节点的?CCEventManager.js事件是注册到了哪里?event-t...
    99+
    2024-04-02
  • laravel的中间件middleware怎么用
    这篇文章将为大家详细讲解有关laravel的中间件middleware怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。中间件可以对请求进行过滤,这里可以利用中间件来验证用户是否登录,如果用户登录则可以...
    99+
    2023-06-21
  • oracle中dbfs文件系统怎么用
    这篇文章主要介绍oracle中dbfs文件系统怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、DBFS介绍Dbfs在文件和目录之上创建了一个标准的文件系统结构,并且将数据存储...
    99+
    2024-04-02
  • c#事件怎么用
    本文小编为大家详细介绍“c#事件怎么用”,内容详细,步骤清晰,细节处理妥当,希望这篇“c#事件怎么用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。事件基于委托,可以为任何一种委托类型提供一种发布\订阅机制。使用e...
    99+
    2023-06-30
  • Node.js怎么使用文件系统模块
    这篇文章主要介绍“Node.js怎么使用文件系统模块”,在日常操作中,相信很多人在Node.js怎么使用文件系统模块问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Node.j...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作