mirror of
https://github.com/zhamao-robot/zhamao-framework.git
synced 2026-07-21 07:35:34 +08:00
renew docs (#205)
This commit is contained in:
@@ -1,320 +0,0 @@
|
||||
# 更新日志(master 分支 commit)
|
||||
|
||||
此文档将显示非发布版的提交版本相关更新文档,可能与发布版的更新日志有重合,在此仅作更新记录。
|
||||
|
||||
同时此处将只使用 build 版本号进行区分。
|
||||
|
||||
## build 473 (2022-5-7)
|
||||
|
||||
- 修复 `server:stop` 命令下部分情况报错的问题
|
||||
|
||||
## build 472 (2022-5-6)
|
||||
|
||||
- 修复 Container 环境继承全局变量的问题
|
||||
|
||||
## build 471 (2022-5-5)
|
||||
|
||||
- 修复 `CQ::encode()` 无法传入 `int` 的强类型解析问题(#113)
|
||||
- (内部)重构 CQ 类
|
||||
- 新增启动命令参数 `--audit-mode`,用于单次审计模式
|
||||
- 修复 `EventMapIterator` 对 PHP 8.1 的兼容性问题
|
||||
- 修复 #95 中提到的无输入流时报错的问题
|
||||
- 新增部分不可执行脚本的防呆退出功能
|
||||
- 修复 `ZMServer` 中的 typo
|
||||
|
||||
## build 470 (2022-5-4)
|
||||
|
||||
- 重构帮助生成器,将帮助生成器重构为 `CommandInfoUtil` 类
|
||||
|
||||
## build 469 (2022-5-3)
|
||||
|
||||
- 新增 `@CommandArgument` 注解,可直接通过注解添加聊天机器人命令参数
|
||||
- 修改默认 Hello 模块下随机数功能为采用 `@CommandArgument` 注解模式
|
||||
- (内部)新增 `EventManager::$event_map`,用于补充对事件对象遍历的方式
|
||||
- 新增 `EventMapIterator` 类,用于遍历注解事件对象
|
||||
- 新增 `MessageUtil::checkArguments()` 方法,用于检查 `@CommandArgument` 注解
|
||||
|
||||
## build 468 (2022-4-30)
|
||||
|
||||
- 优化单元测试流程
|
||||
- 优化上下文对象,在非协程环境下不再会抛出异常或返回 null
|
||||
|
||||
## build 467 (2022-4-29)
|
||||
|
||||
- 优化 `@RequestMapping` 注解事件的方法返回值处理,支持数组和字符串(数组自动转为 JSON 格式)
|
||||
|
||||
## build 466 (2022-4-29)
|
||||
|
||||
- 优化容器支持无名顺序参数的调用
|
||||
- 优化静态路由,支持 64 以上长度的路由
|
||||
|
||||
## build 464 (2022-4-28)
|
||||
|
||||
- 重构全局方法 `match_pattern()`,优化性能以及解决部分字符串不能匹配的 Bug
|
||||
|
||||
## build 463 (2022-4-16)
|
||||
|
||||
- 新增链式调用全局方法 `chain()`
|
||||
- 新增函数执行时间工具全局函数 `stopwatch()`
|
||||
|
||||
## build 462 (2022-4-15)
|
||||
|
||||
- 新增依赖注入、容器支持,目前对 Swoole 事件、机器人事件均支持使用依赖注入
|
||||
- 新增全局容器方法 `container()`、`resolve()`、`app()`,用于获取容器参数等
|
||||
- 新增相关容器测试
|
||||
|
||||
## build 461 (2022-4-11)
|
||||
|
||||
- 新增 AllBotsProxy、AllGroupsProxy 代理类,支持批量发送机器人动作
|
||||
- 新增全局函数 `implode_when_necessary()`,用于将可能为数组的参数转换为字符串
|
||||
|
||||
## build 460 (2022-4-3)
|
||||
|
||||
- 优化代码到 phpstan-level-4
|
||||
|
||||
## build 459 (2022-4-3)
|
||||
|
||||
- 优化代码到 phpstan-level-2
|
||||
|
||||
## build 458 (2022-4-3)
|
||||
|
||||
- 优化代码到 phpstan-level-1
|
||||
- 优化 `module:xxx` 类命令的有关实现代码
|
||||
|
||||
## build 457 (2022-4-2)
|
||||
|
||||
- 新增和优化测试用例(具体见文件)
|
||||
- 部分文件以 PHPStan Level 2 进行规范化
|
||||
|
||||
## build 456 (2022-3-30)
|
||||
|
||||
- 重构 phpunit-swoole,使其可以正常使用
|
||||
- 新增 `--private-mode` 参数,用于隐藏启动前的 MOTD 及敏感信息
|
||||
- 修复 Composer extra 配置项 `zm.exclude-annotation-path` 不能正常工作的 Bug
|
||||
- 优化注解事件加载器,防止 Master 进程中添加的事件在 Worker 中被覆盖的问题
|
||||
- 修复 `DataProvider::isRelativePath()` 方法判断有误的 Bug
|
||||
- 新增退出框架时支持以非 0 exit code 退出的功能
|
||||
- 优化 `ZMUtil::getClassesPsr4()` 方法,排除不含类的文件
|
||||
- 优化 PHP CS Fixer 的配置
|
||||
- 新增测试用例(具体见文件)
|
||||
|
||||
## build 455 (2022-3-27)
|
||||
|
||||
- 修复前几个小版本无法收发消息的 Bug
|
||||
- 新增 API Document 自动生成脚本
|
||||
|
||||
## build 454 (2022-3-27)
|
||||
|
||||
- 修复部分命令下无法杀掉进程的 Bug
|
||||
- 新增 `@Cron` 注解
|
||||
- 修复全局函数 `match_pattern` 无法正常工作的 Bug
|
||||
|
||||
## build 453 (2022-3-25)
|
||||
|
||||
- 新增 property 注解用于 IDE 识别
|
||||
|
||||
## build 452 (2022-3-25)
|
||||
|
||||
- 修复 OnSetup 注解无法使用 Attribute 解析的 Bug
|
||||
- 修复 HelpGenerator 的 Alias 不工作的 Bug
|
||||
|
||||
## build 451 (2022-3-21)
|
||||
|
||||
- 重构全局函数,统一函数命名,并补全注释
|
||||
|
||||
## build 450 (2022-3-21)
|
||||
|
||||
- 新增命令帮助生成器
|
||||
|
||||
## build 449 (2022-3-21)
|
||||
|
||||
- 新增 Composer 模块加载和分发模式
|
||||
|
||||
## build 448 (2022-3-20)
|
||||
|
||||
- 加快 build 命令的执行速度,取消进度条和提升性能
|
||||
|
||||
## build 447 (2022-3-20)
|
||||
|
||||
- 发布 2.7.0 正式版
|
||||
|
||||
## build 446 (2022-3-20)
|
||||
|
||||
- 新增 `./zhamao server` 下的 `--no-state-check` 参数,关闭“启动框架前的运行状态检查”功能
|
||||
|
||||
## build 445 (2022-3-20)
|
||||
|
||||
- 新增配置项 `runtime`.`annotation_reader_ignore`:支持注解解析器忽略注解的自定义
|
||||
|
||||
## build 444 (2022-3-20)
|
||||
|
||||
- 更改 `extra`.`exclude_annotate` 为 `zm`.`exclude-annotation-path` 项
|
||||
|
||||
## build 443 (2022-3-20)
|
||||
|
||||
- 修复注释空格的样式
|
||||
|
||||
## build 442 (2022-3-20)
|
||||
|
||||
- 修复打包模块后 `files` 的 autoload 项不能被解压和引入的 Bug
|
||||
|
||||
## build 441 (2022-3-20)
|
||||
|
||||
- 修复打包模块时命名空间与实际不一致的 Bug
|
||||
|
||||
## build 440 (2022-3-20)
|
||||
|
||||
- 新增方法宏(Macroable)
|
||||
|
||||
## build 439 (2022-3-19)
|
||||
|
||||
- 新增 PHP 8 Attribute 与注解同时支持的特性
|
||||
|
||||
## build 438 (2022-3-18)
|
||||
|
||||
- 修复 Response 类在 PHP 8.1 环境下的报错
|
||||
|
||||
## build 437 (2022-3-17)
|
||||
|
||||
- 修复 `ctx()` 可能会返回 null 的 Bug
|
||||
|
||||
## build 436 (2022-3-15)
|
||||
|
||||
- 新增 PHPStan 和 PHP CS Fixer 并优化全局代码
|
||||
|
||||
## build 435 (2022-3-13)
|
||||
|
||||
- 优化分离 WorkerManager 与 ProcessManager 的职责
|
||||
- 新增 Ctrl+C 一次无法停止框架时多次 Ctrl+C 后可强行杀掉所有进程的功能
|
||||
- `./zhamao server:stop` 新增参数 `--force`,使用 `SIGKILL` 强行杀掉所有进程
|
||||
- 新增 AnnotationParser 对 `autoload-dev` 项中的 `psr-4` 默认检索条件
|
||||
- 新增框架启动状态检测功能,如果已经启动了同样目录的框架,则会报错
|
||||
- 新增“强制启用轮询模式启动热更新”功能(参数 `--polling-watch`)
|
||||
- 修复与 PHP 8.1 的兼容性
|
||||
- 对 DaemonCommand 进行优化,与 ServerCommand 效果相同
|
||||
- 修复 `autoload`.`psr-4` 不存在时报错的 Bug
|
||||
- 新增框架停止时 Worker 退出回显状态码
|
||||
- 新增 inotify 判断模式,如果使用 `--watch` 检测到没有安装 inotify,则自动使用轮询模式
|
||||
|
||||
## build 434 (2022-1-8)
|
||||
|
||||
- 修复框架在 PHP 8.1 下运行时的一些问题
|
||||
- 新增 Console 日志输出到文件的功能
|
||||
|
||||
## build 433 (2021-12-28)
|
||||
|
||||
- 修复 OneBotV11 因 IDE 自动优化导致 API 接口发生变化的问题
|
||||
|
||||
## build 432 (2021-12-25)
|
||||
|
||||
- 新增 GoCqhttpAPI 包,用于支持额外的 OneBot Action(API)
|
||||
- 修复 MySQL 查询器中 `fetchOne()` 方法无法正确返回值的 Bug
|
||||
- 修复 Swoole Hook 因配置不当无法正确使用的 Bug
|
||||
|
||||
## build 431 (2021-12-22)
|
||||
|
||||
- 修复 Issue #50
|
||||
- 新增 PhpStorm IDE 直接运行框架的脚本
|
||||
|
||||
## build 430 (2021-12-8)
|
||||
|
||||
- 删除调试信息
|
||||
- 修复 #56 中关于数据库组件的 Bug
|
||||
|
||||
## build 429 (2021-12-7)
|
||||
|
||||
- 新增配置项 `onebot`.`message_command_policy`
|
||||
- 新增 CQCommand 阻断策略的自定义配置功能
|
||||
- 修复 CQAfter 无法正常使用的 bug #53
|
||||
|
||||
## build 428 (2021-11-16)
|
||||
|
||||
- 修复 `ctx()->waitMessage()` 在 array 消息模式下无法正确返回消息字符串的问题
|
||||
- 新增 `ctx()->getArrayMessage()` 和 `ctx()->getStringMessage()` 两个方法
|
||||
- 修复注解事件 `CQCommand` 和 `CQMessage` 在 array 消息模式下无法正确解析的 Bug
|
||||
|
||||
## build 427 (2021-11-16)
|
||||
|
||||
- 新增全局中间件,可在全局配置文件中设置
|
||||
- 修复部分 Typo
|
||||
- 新增指令 `server:status`、`server:reload`、`server:stop` 可用在新开终端中查看框架运行状态、重启和退出
|
||||
- 新增支持 `array` 格式的消息
|
||||
- 上下文 Context 对象新增 `getOriginMessage()` 用于获取原消息,`getMessage()` 如果在设置了转换后,将默认转换消息为字符串格式保持与旧模块兼容
|
||||
- OneBot API 新增全局过滤器,可用作 Action 过滤重写等操作
|
||||
- 配置文件新增 `runtime.reload_delay_time`,用于可配置重载 Worker 等待的时间(毫秒)
|
||||
- 配置文件新增 `runtime.global_middleware_binding`,用于配置全局中间件
|
||||
- 配置文件新增 `onebot.message_convert_string`,用于配置是否转换数组格式为字符串,保证与前版本的兼容性(默认为 true)
|
||||
- MessageUtil 消息工具类新增方法:`strToArray($msg, bool $ignore_space = true, bool $trim_text = false)`
|
||||
- MessageUtil 消息工具类新增方法:`arrayToStr(array $array)`
|
||||
- 新增框架启动多次监测功能,无法使用同一个框架项目同时启动两个框架
|
||||
|
||||
## build 426 (2021-11-10)
|
||||
|
||||
- 修复 CQ 码的解析函数 Bug(#52)
|
||||
|
||||
## build 425 (2021-11-3)
|
||||
|
||||
- 删除未实际应用功能的配置参数
|
||||
- 修复 reload 时会断开 WebSocket 连接且导致进程崩溃的 Bug
|
||||
|
||||
## build 424 (2021-11-2)
|
||||
|
||||
- 新增 InstantModule 类、ZMServer 类、ModuleBase 类
|
||||
- 配置文件新增 `runtime.reload_kill_connect`、`runtime.global_middleware_binding` 选项
|
||||
- 修复部分情况下闭包事件分发时崩溃的 bug
|
||||
- 新增内部方法 `_zm_env_check`
|
||||
- 调整默认的 OneBot 模块对应的等级从 99999 调整为 99
|
||||
- 新增导出框架运行参数的列表功能
|
||||
|
||||
## build 423 (2021-10-17)
|
||||
|
||||
- 修复 PHP 7.2 ~ 7.3 下无法使用新版 MySQL 组件的 bug
|
||||
|
||||
## build 422 (2021-10-6)
|
||||
|
||||
- 修复 `script_` 前缀无法被排除加载模块的 bug
|
||||
- 修复 MySQL 组件的依赖问题
|
||||
|
||||
## build 421 (2021-9-11)
|
||||
|
||||
- 删除多余的调试信息
|
||||
|
||||
## build 420 (2021-9-11)
|
||||
|
||||
- 修复 OneBot 事件无法响应的 bug
|
||||
- 新增部分 EventDispatcher 触发的事件 debug 日志
|
||||
|
||||
## build 419 (2021-9-11)
|
||||
|
||||
- 修复 DB 模块在未连接数据库的时候抛出未知异常
|
||||
- 修复部分情况下打包模块出现的错误
|
||||
|
||||
## build 418 (2021-9-10)
|
||||
|
||||
- 修复 ZMAtomic 在 test 环境下的 bug
|
||||
- 修复 MessageUtil 的报错
|
||||
|
||||
## build 417 (2021-8-29)
|
||||
|
||||
- 新增 AnnotationException,统一框架内部的抛出异常的类型
|
||||
- 新增 AnnotationParser 下的 `verifyMiddlewares()` 方法
|
||||
- 私有化 CQAPI 类下的内部方法
|
||||
- 将 WebSocket API 响应超时时间从 60 秒缩短为 30 秒
|
||||
- 修复 DB 类不能使用旧查询器的 bug
|
||||
- 统一 DB 类下抛出 Exception 的类型为 ZMException 的子类
|
||||
- EventDispatcher 新增对 `middleware_error_policy` 的处理段
|
||||
- 配置文件下 `runtime` 新增 `middleware_error_policy` 字段
|
||||
- 将 LightCache 组件抛出的异常改为 LightCacheException
|
||||
- ModuleManager 修复改配置的 `load_path` 不生效的 bug
|
||||
- 修复打包时生成的 Phar Autoload 列表出错的 bug
|
||||
- 将配置的 override 改为 overwrite
|
||||
- 新增解包时忽略依赖的选项(`--ignore-depends`)
|
||||
- 删除众多调试日志,修改部分调试日志为 debug 级别的输出
|
||||
- 修改 `ZM\MySQL\MySQLManager` 下的 `getConnection()` 为 `getWrapper()`
|
||||
- MySQLPool 对象新增 `getCount()` 方法
|
||||
- 新增 MySQLQueryBuilder 类(`doctrine/dbal` 的 wrapper 类)
|
||||
- 修复 MySQLStatement 封装原 dbal 组件时与连接池不兼容的 bug
|
||||
- 新增 MySQLStatementWrapper 类
|
||||
- 完善 MySQLWrapper 类,用作主要的查询对象控制类
|
||||
- 编写外部插件加载方式(Phar 热加载功能)
|
||||
- 修复 `ZMUtil::getClassesPsr4()` 方法在遇到空扩展名文件时的报错
|
||||
@@ -1,78 +0,0 @@
|
||||
# 配置文件变更记录
|
||||
|
||||
这里将会记录各个主版本的框架升级后,涉及 `global.php` 的更新日志,你可以根据这里描述的内容与你的旧配置文件进行合并。
|
||||
|
||||
## v2.7.0 (build 447)
|
||||
|
||||
- 新增 `$config['runtime']` 下的 `annotation_reader_ignore` 项。
|
||||
|
||||
## v2.6.6 (build 434)
|
||||
|
||||
- 新增 `$config['runtime']` 下的 `save_console_log_file` 项。
|
||||
|
||||
## v2.6.0 (build 427)
|
||||
|
||||
- 新增 `$config['runtime']` 下的 `reload_delay_time`、`global_middleware_binding` 项。
|
||||
- 新增 `$config['onebot']` 下的 `message_convert_string` 项。
|
||||
|
||||
## v2.5.1 (build 417)
|
||||
|
||||
- 新增 `$config['runtime']` 下的 `middleware_error_policy` 选项。
|
||||
|
||||
## v2.5.0 (build 413)
|
||||
|
||||
- 新增 `$config['runtime']` 运行时设置。
|
||||
- 删除 `$config['server_event_handler_class']`,默认在启动时全局扫描。
|
||||
- 新增 `$config['module_loader']` 模块/插件 打包配置选项。
|
||||
- 新增 `$config['mysql_config']`,取代原先的 `$config['sql_config']`,此外废弃原先的MySQL 查询器 `\ZM\DB\DB` 类。
|
||||
|
||||
更新部分:
|
||||
|
||||
```php
|
||||
/** 一些框架与Swoole运行时设置的调整 */
|
||||
$config['runtime'] = [
|
||||
'swoole_coroutine_hook_flags' => SWOOLE_HOOK_ALL & (~SWOOLE_HOOK_CURL),
|
||||
'swoole_server_mode' => SWOOLE_PROCESS
|
||||
];
|
||||
|
||||
/** MySQL数据库连接信息,host留空则启动时不创建sql连接池 */
|
||||
$config['mysql_config'] = [
|
||||
'host' => '',
|
||||
'port' => 3306,
|
||||
'unix_socket' => null,
|
||||
'username' => 'root',
|
||||
'password' => '123456',
|
||||
'dbname' => 'adb',
|
||||
'charset' => 'utf8mb4',
|
||||
'pool_size' => 64,
|
||||
'options' => [
|
||||
PDO::ATTR_STRINGIFY_FETCHES => false,
|
||||
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
|
||||
]
|
||||
];
|
||||
|
||||
/** 注册 Swoole Server 事件注解的类列表(deleted) */
|
||||
// 删除
|
||||
```
|
||||
|
||||
## v2.4.0 (build 400)
|
||||
- 调整 `$config['modules']['onebot']` 配置项到 `$config['onebot']`,旧版本的此段会向下兼容,建议更新,
|
||||
- 新增 `$config['remote_terminal']` 远程终端的配置项,新增此段即可。
|
||||
|
||||
更新部分:
|
||||
```php
|
||||
/** 机器人解析模块,关闭后无法使用如CQCommand等注解(上面的modules即将废弃) */
|
||||
$config['onebot'] = [
|
||||
'status' => true,
|
||||
'single_bot_mode' => false,
|
||||
'message_level' => 99999
|
||||
];
|
||||
|
||||
/** 一个远程简易终端,使用nc直接连接即可,但是不建议开放host为0.0.0.0(远程连接) */
|
||||
$config['remote_terminal'] = [
|
||||
'status' => false,
|
||||
'host' => '127.0.0.1',
|
||||
'port' => 20002,
|
||||
'token' => ''
|
||||
];
|
||||
```
|
||||
@@ -1,220 +0,0 @@
|
||||
# 更新日志(v1 版本)
|
||||
|
||||
## v1.6.5
|
||||
|
||||
> 更新时间:2020.12.9
|
||||
|
||||
- 修复:版本号显示
|
||||
- 优化:依赖问题,减少对 PHP 扩展的依赖,转变为可选
|
||||
|
||||
## v1.6.4
|
||||
|
||||
> 更新时间:2020.12.9
|
||||
|
||||
- 修复:composer require模式下自动加载的问题
|
||||
- 优化:减少不是必需的依赖问题
|
||||
|
||||
## v1.6.3
|
||||
|
||||
> 更新时间:2020.11.15
|
||||
|
||||
- 修复:Response 对象使用 redirect 造成的递归报错
|
||||
- 修复:`document_index` 配置项在 `/` 路径下无法使用的 bug
|
||||
|
||||
## v1.6.2
|
||||
|
||||
> 更新时间:2020.7.27
|
||||
|
||||
- 修复:不写配置 `server_event_handler_class` 项无法启动的 bug
|
||||
|
||||
## v1.6.1
|
||||
|
||||
> 更新时间:2020.7.26
|
||||
|
||||
- 新增:`ZMRequest::downloadFile($url, $dst)` 方法,可直接将文件下载到本地
|
||||
|
||||
## v1.6
|
||||
|
||||
> 更新时间:2020.7.14
|
||||
|
||||
- 新增:现在可以对类修饰自定义的注解了
|
||||
- 修复:数据库操作 where 对象时产生的歧义
|
||||
- 新增:支持自定义任何 Swoole Server 事件的注解绑定,详见文档
|
||||
- 修复:多个中间件注解对类只生效最后一个的 bug
|
||||
|
||||
❗ 下面是框架升级需要手动进行的变更:
|
||||
|
||||
- 新版本由于引进了自定义 Swoole Server 事件的机制,对 global.php 全局配置文件有了变动,需要添加以下内容才能正常启动(旧版本升级新版本用户,新用户无需操作):
|
||||
|
||||
```php
|
||||
/** 注册 Swoole Server 事件注解的类列表 */
|
||||
$config['server_event_handler_class'] = [
|
||||
\Framework\ServerEventHandler::class, //默认不可删除,否则会不能使用框架
|
||||
];
|
||||
```
|
||||
|
||||
## v1.5.8
|
||||
|
||||
> 更新时间:2020.6.26
|
||||
|
||||
- 新增:`@CQCommand` 注解的 fullMatch 参数(全量正则表达式匹配)
|
||||
|
||||
## v1.5.7
|
||||
|
||||
> 更新时间:2020.6.20
|
||||
|
||||
- 新增:ZM_BREAKPOINT 的短名称:BP
|
||||
- 优化:终端连接器自动重连
|
||||
- 修复:语法错误时防止循环报错
|
||||
|
||||
## v1.5.6
|
||||
|
||||
> 更新时间:2020.6.15
|
||||
|
||||
- 新增:`@CQCommand` 注解支持 `message_type`,`user_id`,`group_id`,`discuss_id` 限定条件
|
||||
- 新增:PDO 数据库支持自定义 fetch_mode,可在 `global.php` 中的 `sql_config["sql_default_fetch_mode"]` 字段设置,也可以调用时 `DB::rawQuery("语句", [], PDO::FETCH_ASSOC);` 第三个参数可选
|
||||
- 🔴 废弃:`ModBase` 基类,基类继承机制将在 1.6 版本起完全删除
|
||||
|
||||
## v1.5.5
|
||||
|
||||
> 更新时间:2020.6.13
|
||||
|
||||
- 修复:`@SwooleEventAt("close")` 下不能使用 `ctx()->getConnection()` 获取链接对象的 bug
|
||||
- 新增:init 命令,可在 `composer require zhamao/framework` 后使用 `vendor/bin/start init` 初始化项目目录结构和配置文件
|
||||
- 更新:默认模块新增机器人断开连接的回调事件
|
||||
|
||||
## v1.5.4
|
||||
|
||||
> 更新时间:2020.6.13
|
||||
|
||||
- 新增:`@CQCommand` 下支持 alias 参数
|
||||
- 更新:将 autoload 变为 composer autoload(需要重新 composer update)
|
||||
|
||||
## v1.5.3
|
||||
|
||||
> 更新时间:2020.6.10
|
||||
|
||||
- 修复:在 Linux 系统下 Terminal 无法正常使用的 bug
|
||||
|
||||
## v1.5.2
|
||||
|
||||
> 更新时间:2020.6.8
|
||||
|
||||
- 新增:`ZM_VERSION` 常量,对应为当前框架版本
|
||||
- 修复:部分链接不带 `/` 会导致 ZMRequest 模块报错的 bug
|
||||
|
||||
## v1.5.1
|
||||
|
||||
> 更新时间:2020.6.5
|
||||
|
||||
- 新增:ZMRequest::request() 自定义构建 HTTP 请求方法
|
||||
- 修复:一个不会导致崩溃的 warning 提示
|
||||
|
||||
## v1.5
|
||||
|
||||
> 更新时间:2020.6.5
|
||||
|
||||
- 重要变更:支持从 composer 使用框架
|
||||
- 新增:数据库 Select 选择器支持 `count()` 方法
|
||||
- 修复:ZMRequest 中 https 和端口的指定顺序问题
|
||||
- 新增:ZMWebSocket 创建 WS 链接的轻量级客户端
|
||||
- 修复:数据库异常的捕获更改为 PDOException
|
||||
|
||||
## v1.4
|
||||
|
||||
> 更新时间:2020.5.23
|
||||
|
||||
- 新增:自定义 motd
|
||||
- 新增:debug_mode 下断点调试功能
|
||||
- 新增:`@OnSave` 注解,储存自动保存的变量时事件激活
|
||||
- 新增:Swoole 版本检测
|
||||
- 新增:全局函数,以 `zm_` 开头的,详情见文档
|
||||
- 新增:`@LoadBuffer` 注解,只加载内存不自动保存的变量
|
||||
- 新增:局部静态文件服务
|
||||
- 新增:mysqlnd 扩展状态检测
|
||||
- 更新:将终端输入更换为多进程
|
||||
- 更新:将数据库连接池变更为 Swoole 官方的连接池,需要 Swoole 版本 >= 4.4.13
|
||||
- 更新:提升注解绑定的事件函数的执行效率
|
||||
- 修复:上下文 `getConnection()` 的 fd 无法获取的 bug
|
||||
- 修复:MySQL 长链接 gone away 自动重连的问题
|
||||
- 修复:MySQL 查询构造器无 WHERE 语句时会造成的 bug
|
||||
- 修复:调整各项资源初始化前后顺序
|
||||
|
||||
不可逆修改:你需要重新执行一次 `composer update` 或重新拉取一次 Docker Image,因为 composer 依赖发生了变化。
|
||||
|
||||
## v1.3.1
|
||||
|
||||
> 更新时间:2020.5.10
|
||||
|
||||
- 修复:DataProvider 下 setJsonData 新建文件夹的问题
|
||||
- 优化:默认 / 页面显示 `Hello Zhamao!` 文字
|
||||
- 优化:Exception 和 Fatal error 报错机制的改进
|
||||
- 修复:计时器没有上下文环境,发不了 API 的 bug
|
||||
|
||||
❗ 下面是框架升级需要手动进行的变更:
|
||||
|
||||
- 更改 MySQL 客户端为原生 PDO mysqlnd,如果之前使用 Docker 启动,则需使用新的 Dockerfile 构建。如果安装在本机,需安装 php-mysql 扩展。本次更新不影响框架内的 API,不需要更改任何代码。
|
||||
|
||||
## v1.3.0
|
||||
|
||||
> 更新时间:2020.5.8
|
||||
|
||||
- 新增:上下文,具体更新都写到了文档里了!
|
||||
- 修复:ZMRobot 的 `setPrefix()` 的严重错误
|
||||
- 优化:优化部分代码
|
||||
- 改动:现在你可以和任意事件的注解使用任意中间件啦,而且还支持多中间件
|
||||
- 新增:CQHTTP + 酷Q + 炸毛框架 的 Dockerfile
|
||||
- 新增注解:`@CQAPISend`,`@CQAPIResponse`,是 API 调用后触发的事件,具体见文档说明
|
||||
|
||||
## v1.2.1
|
||||
|
||||
> 更新时间:2020.5.2
|
||||
|
||||
- 新增:phar 启动模式构建脚本,你可以直接拉取 phar 运行框架了!
|
||||
- 优化:优化部分代码
|
||||
|
||||
## v1.2
|
||||
|
||||
> 更新时间:2020.4.29
|
||||
|
||||
- 新增:systemd 生成脚本、一键 daemonize 守护进程方式常驻后台
|
||||
- 新增:示例模块的注释
|
||||
- 重构:Console 模块,现在有准确的控制台输出分级功能了
|
||||
- 新增:`@OnTick` 注解,用于绑定定时器(毫秒级)
|
||||
- 新增:`ZMRobot` 类,比调用 `CQAPI` 类发送 API 更方便,同时兼容最新版本的 `CQHTTP` 插件
|
||||
- 优化:使用键盘中断 `Ctrl+C`,不会丢失未保存的缓存数据了
|
||||
- 优化:完善上下文对象的方法
|
||||
- 新增:终端命令:`logtest`,测试输出的 log 类型
|
||||
|
||||
:exclamation:下面是框架模块开发中需要注意的或有不兼容的修改内容:
|
||||
|
||||
- 修改:`global.php` 中原来的 `info_level` 默认数值需要改为 `2`,保证终端输出和原来一致
|
||||
|
||||
## v1.1.2
|
||||
|
||||
> 更新时间:2020.4.26
|
||||
|
||||
- 新增:静态文件服务器
|
||||
- 修复:`/` 路径的 Mapping 无法正常绑定的 bug
|
||||
|
||||
## v1.1.1
|
||||
|
||||
> 更新时间:2020.4.26
|
||||
|
||||
- 新增:中间件对类的修饰
|
||||
- 新增:上下文对象对 IDE 的支持
|
||||
- 修复:数据库插入查询的愚蠢错误
|
||||
- 修复:数据库查询的 `value()` 不支持指定参数的 bug
|
||||
|
||||
## v1.1.0
|
||||
|
||||
> 更新时间:2020.3.29
|
||||
|
||||
- 新增:中间件 `@Middleware` 功能
|
||||
- 修复:Websocket 链接关闭后未自动删除连接对象的bug
|
||||
|
||||
## v1.0.0
|
||||
|
||||
> 更新时间:2020.3.19
|
||||
|
||||
正式版发布。
|
||||
@@ -1,625 +0,0 @@
|
||||
# 更新日志(v2 版本)
|
||||
|
||||
## v2.8.0(build 473)
|
||||
|
||||
> 更新时间:2022.5.7
|
||||
|
||||
- 新增 AllBotsProxy、AllGroupsProxy 代理类,支持批量发送机器人动作
|
||||
- 新增全局函数 `implode_when_necessary()`,用于将可能为数组的参数转换为字符串
|
||||
- 新增依赖注入、容器支持,目前对 Swoole 事件、机器人事件均支持使用依赖注入
|
||||
- 新增全局容器方法 `container()`、`resolve()`、`app()`,用于获取容器参数等
|
||||
- 新增相关容器测试
|
||||
- 新增链式调用全局方法 `chain()`
|
||||
- 新增函数执行时间工具全局函数 `stopwatch()`
|
||||
- 新增 `@CommandArgument` 注解,可直接通过注解添加聊天机器人命令参数
|
||||
- (内部)新增 `EventManager::$event_map`,用于补充对事件对象遍历的方式
|
||||
- 新增 `EventMapIterator` 类,用于遍历注解事件对象
|
||||
- 新增 `MessageUtil::checkArguments()` 方法,用于检查 `@CommandArgument` 注解
|
||||
- 新增启动命令参数 `--audit-mode`,用于单次审计模式
|
||||
- 新增部分不可执行脚本的防呆退出功能
|
||||
- 重构全局方法 `match_pattern()`,优化性能以及解决部分字符串不能匹配的 Bug
|
||||
- 优化容器支持无名顺序参数的调用
|
||||
- 优化静态路由,支持 64 以上长度的路由
|
||||
- 优化 `@RequestMapping` 注解事件的方法返回值处理,支持数组和字符串(数组自动转为 JSON 格式)
|
||||
- 优化单元测试流程
|
||||
- 优化上下文对象,在非协程环境下不再会抛出异常或返回 null
|
||||
- 修改默认 Hello 模块下随机数功能为采用 `@CommandArgument` 注解模式
|
||||
- 重构帮助生成器,将帮助生成器重构为 `CommandInfoUtil` 类
|
||||
- 修复 `CQ::encode()` 无法传入 `int` 的强类型解析问题(#113)
|
||||
- (内部)重构 CQ 类
|
||||
- 修复 `EventMapIterator` 对 PHP 8.1 的兼容性问题
|
||||
- 修复 #95 中提到的无输入流时报错的问题
|
||||
- 修复 `ZMServer` 中的 typo
|
||||
- 修复 Container 环境继承全局变量的问题
|
||||
- 修复 `server:stop` 命令下部分情况报错的问题
|
||||
|
||||
## v2.7.6(build 460)
|
||||
|
||||
> 更新时间:2022.4.3
|
||||
|
||||
- 重构 phpunit-swoole,使其可以正常使用
|
||||
- 新增 `--private-mode` 参数,用于隐藏启动前的 MOTD 及敏感信息
|
||||
- 修复 Composer extra 配置项 `zm.exclude-annotation-path` 不能正常工作的 Bug
|
||||
- 优化注解事件加载器,防止 Master 进程中添加的事件在 Worker 中被覆盖的问题
|
||||
- 修复 `DataProvider::isRelativePath()` 方法判断有误的 Bug
|
||||
- 新增退出框架时支持以非 0 exit code 退出的功能
|
||||
- 优化 `ZMUtil::getClassesPsr4()` 方法,排除不含类的文件
|
||||
- 优化 `module:xxx` 类命令的有关实现代码
|
||||
- 优化代码到 phpstan-level-4
|
||||
|
||||
## v2.7.5(build 455)
|
||||
|
||||
> 更新时间:2022.3.27
|
||||
|
||||
- 修复前几个小版本无法收发消息的 Bug
|
||||
- 新增 API Document 自动生成脚本
|
||||
|
||||
## v2.7.4(build 454)
|
||||
|
||||
> 更新时间:2022.3.27
|
||||
|
||||
- 修复部分命令下无法杀掉进程的 Bug
|
||||
- 新增 `@Cron` 注解
|
||||
- 修复全局函数 `match_pattern` 无法正常工作的 Bug
|
||||
|
||||
## v2.7.3(build 453)
|
||||
|
||||
> 更新时间:2022.3.25
|
||||
|
||||
- 新增命令帮助生成器
|
||||
- 重构全局函数,统一函数命名,并补全注释
|
||||
- 修复 OnSetup 注解无法使用 Attribute 解析的 Bug
|
||||
- 修复 HelpGenerator 的 Alias 不工作的 Bug
|
||||
- 新增 property 注解用于 IDE 识别
|
||||
|
||||
## v2.7.2(build 449)
|
||||
|
||||
> 更新时间:2022.3.21
|
||||
|
||||
- 新增 Composer 模块加载和分发模式
|
||||
|
||||
## v2.7.1(build 448)
|
||||
|
||||
> 更新时间:2022.3.20
|
||||
|
||||
- 加快 build 命令的执行速度,取消进度条和提升性能
|
||||
|
||||
## v2.7.0(build 447)
|
||||
|
||||
> 更新时间:2022.3.20
|
||||
|
||||
- 优化分离 WorkerManager 与 ProcessManager 的职责
|
||||
- 新增 Ctrl+C 一次无法停止框架时多次 Ctrl+C 后可强行杀掉所有进程的功能
|
||||
- `./zhamao server:stop` 新增参数 `--force`,使用 `SIGKILL` 强行杀掉所有进程
|
||||
- 新增 AnnotationParser 对 `autoload-dev` 项中的 `psr-4` 默认检索条件
|
||||
- 新增框架启动状态检测功能,如果已经启动了同样目录的框架,则会报错
|
||||
- 新增“强制启用轮询模式启动热更新”功能(参数 `--polling-watch`)
|
||||
- 修复与 PHP 8.1 的兼容性
|
||||
- 对 DaemonCommand 进行优化,与 ServerCommand 效果相同
|
||||
- 修复 `autoload`.`psr-4` 不存在时报错的 Bug
|
||||
- 新增框架停止时 Worker 退出回显状态码
|
||||
- 新增 inotify 判断模式,如果使用 `--watch` 检测到没有安装 inotify,则自动使用轮询模式
|
||||
- 新增 PHPStan 和 PHP CS Fixer 并优化全局代码
|
||||
- 修复 `ctx()` 可能会返回 null 的 Bug
|
||||
- 修复 Response 类在 PHP 8.1 环境下的报错
|
||||
- 新增 PHP 8 Attribute 与注解同时支持的特性
|
||||
- 新增方法宏(Macroable)
|
||||
- 修复打包模块时命名空间与实际不一致的 Bug
|
||||
- 修复打包模块后 `files` 的 autoload 项不能被解压和引入的 Bug
|
||||
- 修复注释空格的样式
|
||||
- 更改 `extra`.`exclude_annotate` 为 `zm`.`exclude-annotation-path` 项
|
||||
- 新增配置项 `runtime`.`annotation_reader_ignore`:支持注解解析器忽略注解的自定义
|
||||
- 新增 `./zhamao server` 下的 `--no-state-check` 参数,关闭“启动框架前的运行状态检查”功能
|
||||
|
||||
## v2.6.6(build 434)
|
||||
|
||||
> 更新时间:2022.1.8
|
||||
|
||||
- 修复框架在 PHP 8.1 下运行时的一些问题
|
||||
- 新增 Console 日志输出到文件的功能
|
||||
|
||||
## v2.6.5(build 433)
|
||||
|
||||
> 更新时间:2021.12.28
|
||||
|
||||
- 修复 OneBotV11 因 IDE 自动优化导致 API 接口发生变化的问题
|
||||
|
||||
## v2.6.4(build 432)
|
||||
|
||||
> 更新时间:2021.12.25
|
||||
|
||||
- 新增 GoCqhttpAPI 包,用于支持额外的 OneBot Action(API)
|
||||
- 修复 MySQL 查询器中 `fetchOne()` 方法无法正确返回值的 Bug
|
||||
- 修复 Swoole Hook 因配置不当无法正确使用的 Bug
|
||||
- 修复 Issue #50
|
||||
- 新增 PhpStorm IDE 直接运行框架的脚本
|
||||
|
||||
## v2.6.3 (build 430)
|
||||
|
||||
> 更新时间:2021.12.8
|
||||
|
||||
- 删除调试信息
|
||||
- 修复 #56 中关于数据库组件的 Bug
|
||||
|
||||
## v2.6.2 (build 429)
|
||||
|
||||
> 更新时间:2021.12.7
|
||||
|
||||
- 新增配置项 `onebot`.`message_command_policy`
|
||||
- 新增 CQCommand 阻断策略的自定义配置功能
|
||||
- 修复 CQAfter 无法正常使用的 bug #53
|
||||
|
||||
## v2.6.1 (build 428)
|
||||
|
||||
> 更新时间:2021.11.16
|
||||
|
||||
- 修复 ctx()->waitMessage() 在 array 消息模式下无法正确返回消息字符串的问题
|
||||
- 新增 ctx()->getArrayMessage() 和 ctx()->getStringMessage() 两个方法
|
||||
- 修复注解事件 CQCommand 和 CQMessage 在 array 消息模式下无法正确解析的 Bug
|
||||
|
||||
## v2.6.0 (build 427)
|
||||
|
||||
> 更新时间:2021.11.16
|
||||
|
||||
- 新增全局中间件,可在全局配置文件中设置
|
||||
- 修复部分 Typo
|
||||
- 新增指令 `server:status`、`server:reload`、`server:stop` 可用在新开终端中查看框架运行状态、重启和退出
|
||||
- 新增支持 `array` 格式的消息
|
||||
- 上下文 Context 对象新增 `getOriginMessage()` 用于获取原消息,`getMessage()` 如果在设置了转换后,将默认转换消息为字符串格式保持与旧模块兼容
|
||||
- OneBot API 新增全局过滤器,可用作 Action 过滤重写等操作
|
||||
- 配置文件新增 `runtime.reload_delay_time`,用于可配置重载 Worker 等待的时间(毫秒)
|
||||
- 配置文件新增 `runtime.global_middleware_binding`,用于配置全局中间件
|
||||
- 配置文件新增 `onebot.message_convert_string`,用于配置是否转换数组格式为字符串,保证与前版本的兼容性(默认为 true)
|
||||
- MessageUtil 消息工具类新增方法:`strToArray($msg, bool $ignore_space = true, bool $trim_text = false)`
|
||||
- MessageUtil 消息工具类新增方法:`arrayToStr(array $array)`
|
||||
- 新增框架启动多次监测功能,无法使用同一个框架项目同时启动两个框架
|
||||
|
||||
## v2.5.8 (build 426)
|
||||
|
||||
> 更新时间:2021.11.10
|
||||
|
||||
- 修复 CQ 码的解析函数 Bug(#52)
|
||||
|
||||
## v2.5.7 (build 425)
|
||||
|
||||
> 更新时间:2021.11.3
|
||||
|
||||
- 调低 OneBot 相关事件在 Swoole 的优先级
|
||||
- 修复部分情况下闭包事件函数分发时引发的崩溃 bug
|
||||
- 修复 reload 时会断开 WebSocket 连接且导致进程崩溃的 bug
|
||||
|
||||
## v2.5.6 (build 423)
|
||||
|
||||
> 更新时间:2021.10.17
|
||||
|
||||
- 修复 PHP 7.2 ~ 7.3 下无法使用新版 MySQL 组件的 bug
|
||||
|
||||
## v2.5.5 (build 422)
|
||||
|
||||
> 更新时间:2021.10.6
|
||||
|
||||
- 修复 `script_` 前缀无法被排除加载模块的 bug
|
||||
- 修复 MySQL 组件的依赖问题
|
||||
|
||||
## v2.5.4 (buidl 421)
|
||||
|
||||
> 更新时间:2021.9.11
|
||||
|
||||
- 删除多余的调试信息
|
||||
|
||||
## v2.5.3 (build 420)
|
||||
|
||||
> 更新时间:2021.9.11
|
||||
|
||||
- 修复 DB 模块在未连接数据库的时候抛出未知异常
|
||||
- 修复部分情况下打包模块出现的错误
|
||||
- 修复 OneBot 事件无法响应的 bug
|
||||
- 新增部分 EventDispatcher 触发的事件 debug 日志
|
||||
|
||||
## v2.5.2 (build 418)
|
||||
|
||||
> 更新时间:2021.9.10
|
||||
|
||||
- 新增 AnnotationException,统一框架内部的抛出异常的类型
|
||||
- 新增 AnnotationParser 下的 `verifyMiddlewares()` 方法
|
||||
- 私有化 CQAPI 类下的内部方法
|
||||
- 将 WebSocket API 响应超时时间从 60 秒缩短为 30 秒
|
||||
- 修复 DB 类不能使用旧查询器的 bug
|
||||
- 统一 DB 类下抛出 Exception 的类型为 ZMException 的子类
|
||||
- EventDispatcher 新增对 `middleware_error_policy` 的处理段
|
||||
- 配置文件下 `runtime` 新增 `middleware_error_policy` 字段
|
||||
- 将 LightCache 组件抛出的异常改为 LightCacheException
|
||||
- ModuleManager 修复改配置的 `load_path` 不生效的 bug
|
||||
- 修复打包时生成的 Phar Autoload 列表出错的 bug
|
||||
- 将配置的 override 改为 overwrite
|
||||
- 新增解包时忽略依赖的选项(`--ignore-depends`)
|
||||
- 删除众多调试日志,修改部分调试日志为 debug 级别的输出
|
||||
- 修改 `ZM\MySQL\MySQLManager` 下的 `getConnection()` 为 `getWrapper()`
|
||||
- MySQLPool 对象新增 `getCount()` 方法
|
||||
- 新增 MySQLQueryBuilder 类(`doctrine/dbal` 的 wrapper 类)
|
||||
- 修复 MySQLStatement 封装原 dbal 组件时与连接池不兼容的 bug
|
||||
- 新增 MySQLStatementWrapper 类
|
||||
- 完善 MySQLWrapper 类,用作主要的查询对象控制类
|
||||
- 编写外部插件加载方式(Phar 热加载功能)
|
||||
- 修复 `ZMUtil::getClassesPsr4()` 方法在遇到空扩展名文件时的报错
|
||||
|
||||
## v2.5.1 (build 416)
|
||||
|
||||
> 更新时间:2021.7.9
|
||||
|
||||
- 修复:脚手架无法正常使用 `init` 命令的 bug。
|
||||
|
||||
## v2.5.0(build 415)
|
||||
|
||||
> 更新时间:2021.7.9
|
||||
|
||||
以下是版本**新增内容**:
|
||||
|
||||
- 新增全新的模块系统,可打包模块(src 目录下的子目录用户逻辑代码)为 phar 格式进行分发和版本备份。
|
||||
- 全局配置文件新增 `module_loader` 项,用于配置外部模块加载的一些设置。
|
||||
- 全局配置文件新增 `runtime` 配置项,可自定义配置 Swoole 的一些运行时参数,目前可配置一键协程化的 Hook 参数和 Swoole Server 的启动模式。
|
||||
- 新增 `module:list` 命令,用于查看未打包和已打包的模块列表。
|
||||
- 新增 `module:pack` 命令,用于打包现有 src 目录下的模块。
|
||||
- 新增 `module:unpack` 命令,用于解包现有的 phar 模块包。
|
||||
- 新增打包框架功能,支持将用户的整个项目连同炸毛框架打包为一个 phar 便携运行,使用命令 `build`。
|
||||
- 新增快捷脚本 `./zhamao`,效果同 `vendor/bin/start` 或 `bin/start`。
|
||||
- 新增启动参数 `--interact`:又重新支持交互终端了,但还是有点问题,不推荐使用。
|
||||
- 新增启动参数 `--disable-safe-exit`:如果你的项目在 Ctrl+C 时总是卡住且项目内没有什么使用 LightCache 等缓存在内存的数据可开启防止关不掉框架。
|
||||
- 新增启动参数 `--preview`:只显示参数,不启动炸毛框架的服务器。
|
||||
- 新增启动参数 `--force-load-module`:强制打包状态下加载的模块(使用英文逗号分隔多个模块名称)。
|
||||
- `CoroutinePool` 协程池新增 `getRunningCoroutineCount` 方法,用于查看协程池中的协程数量。
|
||||
- `DataProvider` 新增 `getFrameworkRootDir()`、`getSourceRootDir()`,分别代表获取框架的根目录和用户源码根目录。(详见下方对目录的定义解释)
|
||||
- `DataProvider` 中 `getDataFolder` 新增参数 `$second = ''`,如果给定,则自动创建子目录 `$second` 并返回。
|
||||
- `DataProvider` 新增 `scanDirFiles()` 方法,用于扫描目录,可选择是否递归、是否返回相对路径,也支持扫描 Phar 文件内的路径,非常好用。
|
||||
- `DataProvider` 新增 `isRelativePath()` 方法,检查路径是否为相对路径(根据第一个字符是否是 '/' 来判断)。
|
||||
- `ZMUtil` 新增 `getClassesPsr4()` 方法,用于根据 Psr-4 标准来获取目录下的所有类文件。
|
||||
- 新增全局错误码,可以根据错误码在文档内快速定位和解决问题。
|
||||
- 中间件和注解事件支持回溯,可以快速查看调用栈(比如中间件可以知道自己是在哪个注解事件中被调用)。
|
||||
- 使用 `./zhamao build` 来构建框架的 phar 包时增加显示进度条。
|
||||
- EventDispatcher 新增方法 `getEid()` 和 `getClass()`,分别用于获取事件分发 ID 和注解事件的注解类名称。
|
||||
- 新增 EventTracer,用于追踪事件的调用栈。
|
||||
- 中间件支持传参。
|
||||
- MySQL 数据库查询器改为使用 `doctrine/dbal` 组件,更灵活和稳定。
|
||||
- 新增对 `SWOOLE_BASE` 模式的支持(支持只启动一个进程的 Server)。
|
||||
|
||||
以下是版本**修改内容**:
|
||||
|
||||
- 启动文件 `vendor/bin/start` 修改为 shell 脚本,可自动寻找 PHP 环境。
|
||||
- 全局强制依赖 `league/climate` 组件。
|
||||
- 修复框架启动时的信息显示换行问题。
|
||||
- 修复框架使用 Phar 方式启动时导致的报错。
|
||||
- 修复使用 Ctrl+C 结束时一部分用户卡住的 bug。
|
||||
- 远程和本地终端去掉 stop 命令,建议直接使用发 SIGTERM 方式结束框架。
|
||||
- 全局配置文件的 `zm_data` 根目录默认修改为 `WORKING_DIR`。
|
||||
- 命令 `systemd:generate` 修改为 `generate:systemd`。
|
||||
- 全局配置文件删除 `server_event_handler_class` 项,此项废弃。
|
||||
- 修复部分 CQ 码解析过程中没有转义的问题。
|
||||
- 将 `ZMRobot` 类转移为 `OneBotV11` 类,但提供兼容。
|
||||
- 修复在守护进程模式下使用 `daemon:reload` 和 `daemon:stop` 命令可能失效的问题。
|
||||
- 修复 systemd 生成时脚本目录错误的 bug。
|
||||
- 修复 PipeMessage 等事件未捕获错误导致崩溃的问题。
|
||||
- `ZM\Http\RouteManager` 移动到 `ZM\Utils\Manager\RouteManager`,但原地址兼容。
|
||||
- 修复 `Terminal` 类使用的一些问题。
|
||||
- 对 `pcntl` 扩展改为可选依赖,当 Swoole 版本大于等于 4.6.7 时不需要安装 `pcntl` 扩展。
|
||||
- 修正启动时框架对缺省配置项的一些默认参数。
|
||||
- 注解 `@OnSetup` 和 `@SwooleHandler` 可直接使用,无需设置 `server_event_handler_class` 即可。
|
||||
- 修复框架在一些非正常终端中运行时导致错误的问题。
|
||||
- 使用 `--debug-mode` 参数时,自动开启热更新。
|
||||
- 修复脚手架在使用 composer 更新后检查全局配置功能的 bug。
|
||||
- 修复重启和关闭框架时造成的非正常连接断开。
|
||||
- 改用独立进程监听文件变化和终端输入。
|
||||
- 修复有协程中断的任务时停止服务器会报 Swoole 警告的 bug。
|
||||
- 修复连接被反复断开的问题。
|
||||
|
||||
**对目录的定义解释**:
|
||||
|
||||
在 2.4.4 版本之前,使用炸毛框架中,只含有两种目录,`getWorkingDir` 和 `getDataFolder`,分别代表获取工作目录和数据目录。在 2.5 版本中,又新增了 `getFrameworkRootDir` 代表获取框架的根目录,`getSourceRootDir` 代表获取源码的根目录。
|
||||
|
||||
以 Composer 运行模式举例,如果你使用 `composer create-project zhamao/framework-starter` 命令新建的框架,那么假设我们从 `/app` 目录下运行此命令,然后使用 `cd framework-starter/` 进入项目目录,此时我们使用 `vendor/bin/start server` 命令运行服务器,对应的目录为:
|
||||
|
||||
- `WorkingDir`:`/app/framework-starter/`
|
||||
- `SourceRootDir`:`/app/framework-starter/`
|
||||
- `FrameworkRootDir`:`/app/framework-starter/vendor/zhamao/framework/`
|
||||
|
||||
如果以源码模式(直接克隆 `zhamao-framework.git` 仓库),启动框架,那么使用命令 `bin/start server` 启动框架后,以上三个返回的目录则完全相同。
|
||||
|
||||
如果以 2.5 版本新的项目归档模式(build)启动框架,假设我们的项目代码打包为 `server.phar`,在 `/app/` 目录,我们使用命令 `php server.phar server` 启动炸毛框架,那么它对应的目录为:
|
||||
|
||||
- `WorkingDir`:`/app/`
|
||||
- `SourceRootDir`:`phar:///app/server.phar/`
|
||||
- `FrameworkRootDir`:`phar:///app/server.phar/vendor/zhamao/framework/`
|
||||
|
||||
如果最后一种归档方式启动的框架是从源码模式打包而来,那么 `FrameworkRootDir` 就与 `SourceRootDir` 相同。
|
||||
|
||||
**版本部分兼容问题变化**:
|
||||
|
||||
理论上如果不使用框架内部未开放的接口方法的话,从 2.4 升级到 2.5 是非常自然的,但是也有一部分可能会造成不兼容的问题。
|
||||
|
||||
- 生成 systemd 配置文件的命令 `systemd:generate` 变成 `generate:systemd`。
|
||||
- 全局配置文件中的 `zm_data` 的父目录由 `__DIR__ . "/../"` 改为 `WORKING_DIR`。
|
||||
- 2.5 版本将 ZMRobot 类中的所有函数方法都移动到了 `OneBotV11` 类中,但原先的 ZMRobot 还可以使用。
|
||||
|
||||
## v2.4.4 (build 405)
|
||||
|
||||
> 更新时间:2021.3.29
|
||||
|
||||
以下是可能不兼容的变更:
|
||||
|
||||
- 新增依赖:框架需要 PHP 安装 pcntl 扩展以及开启 `pcntl_signal` 函数(一般情况下编译安装的都会有,宝塔面板请手动解除函数禁用)
|
||||
|
||||
## v2.4.3 (build 403)
|
||||
|
||||
> 更新时间:2021.3.29
|
||||
|
||||
- 新增:swoole 设置配置新增 `max_wait_time` 项,设置等待进程关闭流程最大时间(秒)
|
||||
- 新增:常量 `MAIN_WORKER`,值等同于 `worker_cache` 项中的 `worker` 参数(WorkerCache 所在的进程)
|
||||
- 新增:`LightCache` 新增 `getExpireTS()` 方法,用于返回项目过期的时间戳
|
||||
- 修复:`savePersistence()` 的部分丢失数据的 bug
|
||||
- 新增:全局方法 `zm_go()`
|
||||
- 修复:2.4.2 版本下的刷屏报错
|
||||
- 优化:Ctrl+C 响应机制,启用异步 重启/关闭 措施,防止残留僵尸进程和丢失数据
|
||||
|
||||
## v2.4.2 (build 402)
|
||||
|
||||
> 更新时间:2021.3.27
|
||||
|
||||
- 更改:`WORKING_DIR` 常量的含义
|
||||
- 修复:未指定 `--remote-terminal` 参数时还依旧开启远程终端的 bug
|
||||
- 删除:`phar_classloader()` 全局方法
|
||||
- 更改:持久化存储 LightCache 的逻辑,修复一个愚蠢的容易造成误用的方式
|
||||
- 新增:LightCache 方法 `addPersistence()` 和 `removePersistence()`
|
||||
- 新增:框架启动短指令 `./zhamao` 或 `php zhamao`
|
||||
|
||||
## v2.4.1 (build 401)
|
||||
|
||||
> 更新时间:2021.3.25
|
||||
|
||||
- 修复:开启框架时导致的报错
|
||||
|
||||
## v2.4.0(build 400)
|
||||
|
||||
> 更新时间:2021.3.25
|
||||
|
||||
- 新增:检查全局配置文件的命令
|
||||
- 新增:全局配置文件更新记录
|
||||
- 依赖变更:**Swoole 最低版本需要 4.5.0**
|
||||
- 优化:reload 和 stop 命令重载和停止框架的逻辑
|
||||
- 新增:`$_running_annotation` 变量,可在注解事件中的类使用
|
||||
- 新增:远程终端(Remote Terminal),弥补原来删掉的本地终端,通过 nc 命令连接即可
|
||||
- 新增:启动参数 `--worker-num`,`--task-worker-num`,`--remote-terminal`
|
||||
- 更新:全局配置文件结构
|
||||
- 新增:Swoole 计时器报错处理
|
||||
- 新增:全局方法(`zm_dump()`,`zm_error()`,`zm_warning()`,`zm_info()`,`zm_success()`,`zm_verbose()`,`zm_debug()`,`zm_config()`)
|
||||
- 新增:示例模块的图灵机器人和 at 机器人的处理函数
|
||||
- 新增:MessageUtil 工具类新增 `isAtMe(), splitCommand(), matchCommand()` 方法
|
||||
- 新增:ProcessManager 进程管理类新增 `workerAction(), sendActionToWorker(), resumeAllWorkerCoroutines()` 方法
|
||||
- 优化:CQCommand 的匹配逻辑
|
||||
- 新增:支持添加自定义远程终端指令的 `@TerminalCommand` 注解
|
||||
- 新增:图灵机器人 API 封装函数
|
||||
- 新增:ZMUtil 工具杂项类 `getReloadableFiles()` 函数
|
||||
- 新增:`vendor/bin/start systemd:generate` 生成 systemd 配置文件的功能
|
||||
- 新增:`vendor/bin/start check:config` 检查配置文件更新的命令
|
||||
- 新增:`vendor/bin/start init` 新增 `--force` 参数,覆盖现有文件重新生成
|
||||
- 新增:MessageUtil 新增方法:`addShortCommand()`,用于快速添加静态文本问答回复的
|
||||
|
||||
以下是需要**手动更新**或**更换新写法**的部分:
|
||||
|
||||
- 配置文件 `global.php` 中的 `modules` 字段展开,内置模块的配置一律平铺到外面。详见 [更新日志 - 配置文件变更](/update/config)。
|
||||
|
||||
以下是默认机器人直接连接产生的变更:
|
||||
|
||||
- 2.4.0 新增了默认回复其他人 at 的消息,如果不需要,请将 `Hello.php` 中的 `changeAt()` 和 `turingAPI()` 方法删除。
|
||||
|
||||
## v2.3.5 (build 398)
|
||||
|
||||
> 更新时间:2021.3.23
|
||||
|
||||
- 修复:MySQL 数据库查询导致的一系列问题
|
||||
- 修复:内存泄露问题
|
||||
|
||||
> 2.3.2-2.3.4 版本由于操作失误导致代码不完整,请直接使用 2.3.5 即可。
|
||||
|
||||
## v2.3.1
|
||||
|
||||
> 更新时间:2021.3.18
|
||||
|
||||
- 规范代码,修复一个小报错的 bug
|
||||
|
||||
## v2.3.0
|
||||
|
||||
> 更新时间:2021.3.16
|
||||
|
||||
- 新增:MessageUtil 消息处理工具类
|
||||
- 新增:TaskManager,封装了 TaskWorker 进程的应用
|
||||
- 新增:CQObject,使用 `CQ::getCQ()` 可获取对象形式的 CQ 码解析结果
|
||||
- 新增:`@OnTask` 注解,绑定任务函数
|
||||
- 新增:RouteManager 路由管理类,可快速添加路由
|
||||
- 修复:`ZM_DATA` 和 `DataProvider::getDataFolder()` 返回 false 的问题
|
||||
- 优化:关闭显示停止框架后多余的输出信息
|
||||
|
||||
注:本次升级建议升级后合并全局配置文件,有一些新加的内容。
|
||||
|
||||
## v2.2.11
|
||||
|
||||
> 更新时间:2021.3.13
|
||||
|
||||
- 新增:内部 ID 版本号(ZM_VERSION_ID)
|
||||
- 优化:启动时 log 的等级
|
||||
- 移除:终端输入命令
|
||||
- 修复:纯 HTTP 服务器的启动 bug
|
||||
- 新增:`zm_timer` 的报错处理,防止服务器直接崩掉
|
||||
|
||||
## v2.2.10
|
||||
|
||||
> 更新时间:2021.3.8
|
||||
|
||||
- 新增:用户态 php 编译脚本 `build-runtime.sh`
|
||||
- 移除:无用的调试信息
|
||||
- 新增:`--show-php-ver` 启动参数
|
||||
|
||||
## v2.2.9
|
||||
|
||||
> 更新时间:2021.3.6
|
||||
|
||||
- 更新:`reply()` 方法传入数组则变为快速相应的 API 操作
|
||||
- 修复:在 Worker 进程下调用 `ZMUtil::reload()` 会导致一些奇怪的 bug
|
||||
- 修复:`reply()` 时会 at 私聊成员的 bug(由 go-cqhttp 导致)
|
||||
|
||||
## v2.2.8
|
||||
|
||||
> 更新时间:2021.3.2
|
||||
|
||||
- 更新:MOTD 显示的方式,更加直观和炫酷
|
||||
|
||||
## v2.2.7
|
||||
|
||||
> 更新时间:2021.2.27
|
||||
|
||||
- 修复:2.2.6 版本下 `reply()` 方法在群里调用会 at 成员的 bug
|
||||
- 修复:空 `access_token` 的情况下会无法连入的 bug
|
||||
- 修复:使用 Closure 闭包函数自行编写逻辑的判断返回 false 无法阻断连接的 bug
|
||||
|
||||
## v2.2.6
|
||||
|
||||
> 更新时间:2021.2.26
|
||||
|
||||
- 新增:`uuidgen()` 全局函数,快速生成 uuid
|
||||
- 修复:MySQL `rawQuery()` 在参数为非数组时会报 Warning 的 bug
|
||||
- 新增:示例模块的 API 示例:一言查询
|
||||
- 优化:删减部分无用代码
|
||||
- 更改:`ctx()->reply()` 方法改为调用隐藏方法:`.handle_quick_operation`
|
||||
- 修复:`ctx()->finalReply()` 一直以来的 bug(未阻断事件)
|
||||
- 新增:`access_token` 配置项支持闭包函数自行设计判断方式和逻辑
|
||||
- 新增:全局函数 `working_dir()`
|
||||
|
||||
## v2.2.5
|
||||
|
||||
> 更新时间:2021.2.20
|
||||
|
||||
- 新增:`saveToJson()` 和 `loadFromJson()` 方法(DataProvider 类)
|
||||
- 修复:`@OnSave` 注解事件无法工作的 bug
|
||||
- 调整:自定义计时器创建时的性能调优
|
||||
- 新增:WorkerCache 方法:`hasKey()`
|
||||
- 新增:SpinLock 方法:`transaction()`(直接在事务中上锁)
|
||||
- 新增:CQ 方法:`getAllCQ()`,`_custom()`(获取消息中的所有 CQ 码)
|
||||
- 修复:CQ 类中的部分 bug
|
||||
|
||||
## v2.2.4
|
||||
|
||||
> 更新时间:2021.2.7
|
||||
|
||||
- 修复:终端交互导致的 ssh 断掉后 CPU 占用过高的问题
|
||||
- 修复:WorkerCache 在缺少配置文件下工作异常的问题
|
||||
- 新增:全局函数:`zm_atomic()`
|
||||
|
||||
## v2.2.3
|
||||
|
||||
> 更新时间:2021.1.30
|
||||
|
||||
- 修复:waitMessage() 在 v2.2.2 版本中不可用的 bug
|
||||
- 修复:access_token 无效的问题
|
||||
|
||||
## v2.2.2
|
||||
|
||||
> 更新时间:2021.1.29
|
||||
|
||||
- 修复:模块文件错误时避免循环报错
|
||||
- 优化:代码结构
|
||||
- 修复:在不同进程时调用机器人 API 无法返回且报错的 bug
|
||||
- **修复:机器人无法连接的问题(2.1.6 ~ 2.2.1 受影响)**
|
||||
|
||||
## v2.2.1
|
||||
|
||||
> 更新时间:2021.1.29
|
||||
|
||||
- 修复:配置文件兼容性问题
|
||||
|
||||
## v2.2.0
|
||||
|
||||
> 更新时间:2021.1.29
|
||||
|
||||
- 新增:`@OnPipeMessageEvent` 注解
|
||||
- 新增:进程管理器
|
||||
- 新增:`--daemon` 守护进程化后查看状态以及一系列操作的命令行
|
||||
- 新增:WorkerCache
|
||||
- 修复:路由问题
|
||||
- 修复:`http_header` 配置项不生效的 bug
|
||||
- 优化:框架内部所有异常全部基于 `ZMException`
|
||||
- 优化:SingletonTrait 支持扩展
|
||||
|
||||
## v2.1.6
|
||||
|
||||
> 更新时间:2021.1.18
|
||||
|
||||
- 优化:代码结构
|
||||
- 增加:更多提示语
|
||||
- 修复:处理空格消息时的报错
|
||||
- 修复:上下文的bug
|
||||
|
||||
## v2.1.5
|
||||
|
||||
> 更新时间:2021.1.13
|
||||
|
||||
- 优化:终端对 PHP Warning 和 PHP Notice 的报错信息显示,统一格式
|
||||
- 新增:`ctx()->getNumArg()` 上下文中快速获取数字类型的参数的方法
|
||||
- 优化:删除不必要的调试信息
|
||||
- 优化:路由组件全面替换为 `symfony/routing`,兼容性和稳定性 up!
|
||||
|
||||
## v2.1.4
|
||||
|
||||
> 更新时间:2021.1.3
|
||||
|
||||
- 修复:启动时会提示丢失类的 bug
|
||||
- 优化:HTTP 响应类如果被使用了则一律返回 false
|
||||
- 优化:PHP Warning 等报错统一样式
|
||||
|
||||
## v2.1.3
|
||||
|
||||
> 更新时间:2021.1.2
|
||||
|
||||
- 修复:注解解析器在某种特殊情况下导致的 bug
|
||||
|
||||
## v2.1.2
|
||||
|
||||
> 更新时间:2021.1.2
|
||||
|
||||
- 修复:引入包模式启动时会导致的满屏报错
|
||||
|
||||
## v2.1.1
|
||||
|
||||
> 更新时间:2021.1.2
|
||||
|
||||
- 修复:自定义加载注解选定 composer.json 文件错误的 bug
|
||||
|
||||
## v2.1.0
|
||||
|
||||
> 更新时间:2021.1.2
|
||||
|
||||
- 新增:`@OnOpenEvent`,`@OnCloseEvent`,`@OnMessageEvent`,`@OnRequestEvent`
|
||||
- 优化事件分发器,修复一些事件分发过程中的 bug
|
||||
- 修复 `@CQBefore` 事件的 bug
|
||||
|
||||
## v2.0.3
|
||||
|
||||
> 更新时间:2020.12.31
|
||||
|
||||
- 修复:CQBefore 注解事件在 level 低于 200 时无法调用的 bug
|
||||
- 修复:CQMetaEvent 注解事件调用时报错的 bug
|
||||
|
||||
## v2.0.2
|
||||
|
||||
> 更新时间:2020.12.31
|
||||
|
||||
- 更新:将 CQ 码调用类更新到与最新 OneBot 标准相兼容的状态
|
||||
|
||||
## v2.0.1
|
||||
|
||||
> 更新时间:2020.12.23
|
||||
|
||||
- 修复:开屏报错文件夹不存在
|
||||
|
||||
## v2.0
|
||||
|
||||
> 更新时间:2020.12.23
|
||||
|
||||
已发布正式版。
|
||||
Reference in New Issue
Block a user