[译]Laravel 5.0 之事件自动生成
时间:2022-05-02
本文章向大家介绍[译]Laravel 5.0 之事件自动生成,主要内容包括输入 event:generate、如何实现、写在最后、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。
本文译自 Matt Stauffer 的系列文章.
创建一个事件及其处理程序,再把两者关联起来,或者创建一个命令及其处理程序,再把两者关联起来。有时候这看起来需要大量的工作。因此我经常期望能有一个工作流可以把所有这些工作整合在一起来处理。
用来创建事件和命令的 Artisan 命令是一个很好的开始,它能同时创建命令或事件的实体并且同时生成它们的处理程序(可选的)。但编写命令和处理程序依然需要花费个把小时的时间,然后还得再花另外的 15 分钟来调试它们。或许花了大量的时间之后才发现问题其实只是因为你没有把它们绑定起来……
输入 event:generate
好在,我们的紧张等待终于结束了。在 Laravel 5 中,你可以在 EventServiceProvider
中绑定(不存在的)事件和处理程序,只要执行 php artisan event:generate
, Artisan 就会自动生成全部文件,包括事件和对应的处理程序。
如何实现
先看一下事件和处理程序的目录:
app/
Events/
Event.php
Handlers/
Events/
1) 打开 app/providers/EventServiceProvider.php
, 找到 $listen
属性,通常情况下我们就在这里进行事件绑定,按照下面的格式添加一条绑定:
protected $listen = [
DidSomethingEvent::class => [
RespondOneWay::class,
RespondAnotherWay::class
]
];
2) 执行 php artisan event:generate
3) 搞定。
检查一下:
app/
Events/
Event.php
DidSomethingEvent.php
Handlers/
Events/
RespondOneWay.php
RespondAnotherWay.php
事件和处理程序已经自动创建并且做好绑定,直接可用!如果打开代码,你可以看到它们甚至还做了类型约束:
namespace AppHandlersEvents;
...
class RespondOneWay {
...
public function handle(DidSomethingEvent $event)
{
}
}
写在最后
太棒了!就这么简单!现在你就可以抽象地设计你的事件系统了——你可以在不用编写任何命令或者处理程序的情况下规划整个事件系统。当你设计完成后,只要执行一条简单的命令,就能生成你规划的所有事件和处理程序。
- 战斗民族开源神器ClickHouse:一款适合于构建量化回测研究系统的高性能列式数据库(二)
- Microsoft StreamInsight 构建物联网
- 利用 Microsoft StreamInsight 控制较大数据流
- HTML Agility Pack 搭配 ScrapySharp,彻底解除Html解析的痛苦
- 看看你是哪种级别的Python程序员(已跪)
- SignalR 在IE中无法工作 - Internet Explorer
- SQL Server 2012 中的 Service Broker功能的一些改进或增强
- 通用日志
- 数据包络分析教程
- 用JAVA的DEA算法衡量社交媒体页面的流行度
- 如何构建智能反垃圾邮件的WordPress插件
- 【深入研究】使用RNN预测股票价格系列一
- 【深入研究】使用RNN预测股票价格系列二
- 教你用一行Python代码实现并行(附代码)
- php概述
- php教程
- php环境搭建
- PHP书写格式
- php变量
- php常量
- PHP注释
- php数组
- php字符串 string
- PHP整型 integer
- PHP浮点型 float
- php布尔型
- php数据类型之数组
- php数据类型之对象
- php数据类型之null
- php数据类型之间的转换
- php运算符
- php表达式
- PHP循环控制
- PHP流程控制
- php函数
- php全局变量
- PHP魔术变量
- php命名空间
- php 日期
- PHP包含文件
- php文件
- PHP 文件上传
- php Cookies
- php Sessions
- php email
- php安全email
- php错误处理
- PHP异常处理
- php过滤器
- PHP 高级过滤器
- php json
- php 表单
- PHP MySQL 简介
- PHP 连接 MySQL
- php创建数据库
- php 创建表
- php mysq 插入数据
- PHP MySQL 插入多条数据
- PHP MySQL 预处理语句
- php mysql 读取数据
- php mysql where
- PHP MySQL Order By
- PHP MySQL Update
- PHP MySQL Delete
- php ODBC
- 【python-leetcode56-区间合并】合并区间
- 【python-leetcode876-快慢指针】链表的中间节点
- vuejs之springboot+vue+element-ui之分页显示相关信息
- vuejs之vue和springboot后端进行通信
- vuejs之springboot+vue+element-ui之添加信息
- vuejs之使用axios发送http请求
- vuejs小例子之记事本
- c语言之在main中获取命令行的参数
- c语言之指针数组
- c语言之函数指针和指针函数的区别
- vuejs之v-model
- c语言之指向函数的指针
- c语言之字符指针变量和字符数组的异同
- c语言之利用指针复制字符串的几种形式
- c语言之利用函数实现字符串的复制