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

【Laravel系列7.5】事件系统

事件系统 说到事件,你会想到什么?JS 中的回调函数,按扭的回调事件?没错,这些都是事件的应用。不过在 Laravel 中,事件是一种解耦机制,是 观察者 模式的一种体现。...如果你是新安装的 Laravel 环境,可能没有这两个目录,那么我们可以手动建立,也可以直接使用命令行生成对应文件,这些目录会被自动创建。...在 makeListener() 方法中,最后返回的是一个闭包回调函数。...其实讲到这里,大家也能看出来了,Laravel 中不需要预埋勾子函数,就是因为类似的功能都是通过事件来实现的。总体来说,事件功能还是非常好用的,也非常方便使用。...参考文档: https://learnku.com/docs/laravel/8.5/events/10387

1.7K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Laravel 模型事件的应用

    在日常处理一些用户操作事件时,我们有时候需要记录下来,方便以后查阅,或者大数据统计。...Laravel在模型事件中处理起来很方便:https://laravel-china.org/docs/laravel/5.5/eloquent#events Laravel 的模型事件有两种方式,...设置dispatchesEvents属性映射事件类 使用观察器来注册事件,这里介绍第二种 新建模型 php artisan make:model Log <?...(我这挺多的,之后大概长这样) 模型注册事件 然后我们触发一些事件(增删改,表的数据就有了) 事件 多对多的关联插入不会出触发模型(比如attach方法) 这时候就需要自己新建事件类来模拟...,这里就是根据传入的数组id遍历,然后创建日志 PermissionRoleEventLog 之后应用事件 事件 更优雅的处理登录注销事件 在EventServiceProvider

    21010

    Laravel 5.0 之事件自动生成

    . ---- 创建一个事件及其处理程序,再把两者关联起来,或者创建一个命令及其处理程序,再把两者关联起来。有时候这看起来需要大量的工作。...用来创建事件和命令的 Artisan 命令是一个很好的开始,它能同时创建命令或事件的实体并且同时生成它们的处理程序(可选的)。...在 Laravel 5 中,你可以在 EventServiceProvider 中绑定(不存在的)事件和处理程序,只要执行 php artisan event:generate, Artisan 就会自动生成全部文件...,包括事件和对应的处理程序。...现在你就可以抽象地设计你的事件系统了——你可以在不用编写任何命令或者处理程序的情况下规划整个事件系统。当你设计完成后,只要执行一条简单的命令,就能生成你规划的所有事件和处理程序。

    83440

    Laravel源码解析之事件系统

    Laravel 的事件提供了一个简单的观察者实现,能够订阅和监听应用中发生的各种事件。事件机制是一种很好的应用解耦方式,因为一个事件可以拥有多个互不依赖的监听器。...对于闭包监听来说, makeListener 会再包装一层返回一个闭包函数作为事件的监听者。...所以监听者返回闭包都是为了包装好事件注册时的上下文,等待事件触发的时候调用闭包来执行任务。...listeners中找到事件名称对应的所有 listener闭包,然后调用这些闭包来执行监听器中的任务,需要注意的是: 如果事件名参数事件对象,那么会用事件对象的类名作为事件名,其本身会作为时间参数传递给...Laravel的事件系统原理还是跟之前讲的观察者模式一样,不过框架的作者功力深厚,巧妙的结合应用了闭包来实现了事件系统,还有针对需要队列处理的事件,应用事件在一些比较复杂的业务场景中能利用关注点分散原则有效地解耦应用中的代码逻辑

    1.1K40

    Supervisor自动管理Laravel事件队列

    首先使用artisan创建一个事件 php artisan make:event DoTest 此时在Events/目录下会生成一个DoTest文件 为这个事件创建一个监听器 php artisan make...:listen DoTest 此时在Listeners/目录下会生成一个DoTest文件 我们让监听器监听DoTest事件 在Providers/EventServiceProvider.php文件中添加配置.../dotest.log'; ¦ file_put_contents($log, "dotest\r\n", FILE_APPEND | LOCK_EX); } 随便在一个脚本中调用事件...... } 此时我们在执行下脚本,发现并无新增数据 因为队列进程还未启动:ps aux | grep 'do_test_event' 打开进程配置文件:vim /etc/supervisord.d/laravel_work.ini...autostart=true autorestart=true user=worker numprocs=4 redirect_stderr=true stdout_logfile=/apps/log/laravel

    48440

    Laravel 5.0 之事件及处理程序

    借助 Laravel 5 的命令(及命令处理程序),你可以通过封装的方式非常简单、直接地向系统发出命令。...比如在 Laravel 4 中,可以直接以事件名称的字符串来触发事件(而不是像上面那样通过对象和方法): $response = Event::fire('auth.login', array($user...在 Laravel 5 中,事件系统已经得到了升级,看上去与上一篇文章中介绍过的命令系统有几分相似。...但那当然不是 Laravel 的思路, Laravel 提供了事件总线让以上这一系列的工作更简单,更具有一致性和全局性: \Event::fire(new ThingWasDone($param1, $...只要你理解了 Laravel 5 的命令和处理程序,掌握事件处理机制就是一件非常容易的事了。触发系统向整个应用发出通知说某个事件发生了,而不是要求系统执行某些操作。但本质上它们都是封装的信息和目的。

    1.2K50

    PHP-web框架Laravel-事件(一)

    在Laravel框架中,事件是一种用于处理应用程序中各种操作的工具。事件可以用于在某个操作执行前或执行后执行一些特定的代码。使用Laravel框架,我们可以轻松地定义和使用事件。...一、事件的基本概念在Laravel框架中,事件由两个主要部分组成:事件和事件监听器。事件表示应用程序中的某个操作,例如创建用户或更新文章。...二、事件的创建和注册在Laravel框架中,可以使用make:event命令来创建新事件。该命令将生成一个新的事件类,并将其保存到app/Events目录中。...在创建事件类之后,可以使用event函数将其注册。event函数需要一个事件对象作为参数,并返回一个事件调度程序对象。事件调度程序对象可用于在事件发生时触发事件监听器。...$user变量是事件对象的参数。三、事件监听器的创建和注册在Laravel框架中,可以使用make:listener命令创建新的事件监听器。

    57920

    PHP-web框架Laravel-事件(二)

    四、事件的处理在Laravel框架中,事件监听器通常用于执行特定的操作。...handle方法是事件监听器的主要方法。当事件发生时,该方法将被调用,并将事件对象作为参数传递。在上面的示例中,我们可以在handle方法中向用户发送确认电子邮件。...五、事件的调度在Laravel框架中,可以使用dispatch函数触发事件。dispatch函数需要一个事件对象作为参数,并将事件对象传递给所有与之相关联的事件监听器。...$user变量是事件对象的参数。六、事件的测试在Laravel框架中,可以使用测试工具来测试事件。测试工具可以帮助我们确保事件和事件监听器按预期工作。...这使得我们可以轻松地测试事件的调度。Event::assertDispatched函数用于断言事件是否被调度。

    57150

    基于Container Event容器事件的Laravel WEB APP

    说明:本文主要讲述Laravel容器事件,并更根据容器事件做一个简单demo供加深理解容器事件。同时,作者会将开发过程中的一些截图和代码黏上去,提高阅读效率。...关于Container Event可以看文档:容器事件。...当输入错误时会提示错误信息: Container Event就是在Service对象从容器中解析注入前触发事件,可以利用这个功能做一些有趣又好用的好东西呢,比如Laravel框架的表单请求验证就是这么做的...总结:本节主要讲述Laravel的容器事件,并以Form Requet为例说明它的用途,同时以一个小demo讲述怎么一步步建立并监听容器事件。...嘛,过两天还想结合Laravel的Task Scheduler任务调度新开篇章,到时见。

    1.1K21

    如何正确使用 Composer 安装 Laravel 扩展包

    正确使用 Composer 安装 Laravel 扩展包: 简单解释composer install如有 composer.lock 文件,直接安装,否则从 composer.json 安装最新扩展包和依赖...; composer update 从 composer.json 安装最新扩展包和依赖;composer update vendor/package 从 composer.json 或者对应包的配置,...流程一:新项目流程 创建 composer.json 并添加依赖到的扩展包;运行 composer install 安装扩展包并生成 composer.lock 提交 composer.lock 到代码版本控制器中...流程三:为项目添加新扩展包 使用 composer require vendor/package添加扩展包; 提交更新后的 composer.json和 composer.lock 到代码版本控制器中,...关于扩展包的安装方法 那么,准备添加一个扩展包,install, update, require 三个命令都可以用来安装扩展包,选择哪一个才是正确的呢?

    1.6K10

    基于Model Event模型事件的Laravel实时APP

    说明:本文主要来源于real-time-apps-laravel-5-1-event-broadcasting 本文主要基于Laravel的Model Event介绍该框架的实时通信功能,Laravel...Pusher包,有关Pusher的注册和使用相关信息可以参考:(基于 Pusher 驱动的 Laravel 事件广播)(上)。...备注:Laravel对Model的CRUD操作都会触发对应的事件,如create操作会在创建前触发creating事件,创建后触发created事件,即Model Event。...想要了解更多可以参考这篇文章:(基于 Pusher 驱动的 Laravel 事件广播)(下) 测试实时功能 刷新AB页面,并观察数据库model_event.items。 测试实时创建功能。...嘛,过两天还想结合Laravel的Container Event容器事件新开篇文章,到时见。

    5.6K31
    领券