v1.1.32 - 2020-05-21
v1.1.32 - 2020-05-21
修复
- #1734 修复模型多态查询,关联关系为空时,也会查询 SQL 的问题;
- #1739 修复
hyperf/filesystem组件 OSS HOOK 位运算错误,导致 resource 判断不准确的问题; - #1743 修复
grafana.json中错误的refId字段值; - #1748 修复
hyperf/amqp组件在使用其他连接池时,对应的concurrent.limit配置不生效的问题; - #1750 修复连接池组件,在连接关闭失败时会导致计数有误的问题;
- #1754 修复 BASE Server 服务,启动提示没有考虑 UDP 服务的情况;
- #1764 修复当时间值为 null 时,datatime 验证器执行失败的 BUG;
- #1769 修复
hyperf/socketio-server组件中,客户端初始化断开连接操作时会报 Notice 的错误的问题;
新增
- #1724 新增模型方法
Model::orWhereHasMorph,Model::whereDoesntHaveMorphandModel::orWhereDoesntHaveMorph; - #1741 新增
Hyperf\Command\Command::choiceMultiple(): array方法,因为choice方法的返回类型为string,所以就算设置了$multiple` 参数也无法处理多个选择的情况; - #1742 新增模型 自定义类型转换器 功能;
- 新增 interface
Castable,CastsAttributes和CastsInboundAttributes; - 新增方法
Model\Builder::withCasts; - 新增方法
Model::loadMorph,Model::loadMorphCount和Model::syncAttributes;
- 新增 interface
v1.1.31 - 2020-05-14
新增
修复
优化
- #1710 MAC 系统下不再使用
cli_set_process_title方法设置进程名。
v1.1.30 - 2020-05-07
新增
- #1616 新增 ORM 方法
morphWith和whereHasMorph。 - #1651 新增
socket.io-server组件。 - #1666 #1669 新增 AMQP RPC 客户端。
修复
优化
- #1670 优化掉
Cache 组件一条无意义的删除指令。
v1.1.28 - 2020-04-30
新增
- #1645 匿名函数路由支持参数注入。
- #1647 为
model-cache组件添加RedisStringHandler。 - #1654 新增
RenderException统一捕获view组件抛出的异常。
修复
- #1639 修复
rpc-client会从consul中获取到不健康节点的 BUG。 - #1641 修复
rpc-client获取到的结果为null时,会抛出RequestException的 BUG。 - #1641 修复
rpc-server中jsonrpc-tcp-length-check协议,无法在consul中添加心跳检查的 BUG。 - #1650 修复脚本
describe:routes列表展示有误的 BUG。 - #1655 修复
MysqlProcessor::processColumns无法在MySQL Server 8.0版本中正常工作的 BUG。
优化
- #1636 优化
co-phpunit脚本,当出现case验证失败后,协程也可以正常结束。
v1.1.27 - 2020-04-23
新增
- #1575 为脚本
gen:model生成的模型,自动添加relationscope和attributes的变量注释。 - #1586 添加
symfony/event-dispatcher组件小于4.3时的conflict配置。用于解决用户使用了4.3以下版本时,导致SymfonyDispatcher实现冲突的 BUG。 - #1597 为
AMQP消费者,添加最大消费次数maxConsumption。 - #1603 为
WebSocket服务添加基于fd存储的Context。
修复
- #1553 修复
jsonrpc服务,发布了相同名字不同协议到consul后,客户端无法正常工作的 BUG。 - #1589 修复了文件锁在协程下可能会造成死锁的 BUG。
- #1607 修复了重写后的
go方法,返回值与swoole原生方法不符的 BUG。 - #1624 修复当路由
Handler是匿名函数时,脚本describe:routes执行失败的 BUG。
v1.1.26 - 2020-04-16
新增
- #1578
UploadedFile支持getStream方法。
修复
- #1563 修复服务关停后,定时器的
onOneServer配置不会被重置。 - #1565 当
DB组件重连Mysql时,重置事务等级为 0。 - #1572 修复
Hyperf\GrpcServer\CoreMiddleware中,自定义类的父类找不到时报错的 BUG。 - #1577 修复
describe:routes脚本server配置不生效的 BUG。 - #1579 修复
migrate:refresh脚本step参数不为int时会报错的 BUG。
变更
- #1560 修改
hyperf/cache组件文件缓存引擎中 原生的文件操作为Filesystem。 - #1568 修改
hyperf/async-queue组件Redis引擎中的\Redis为RedisProxy。
v1.1.25 - 2020-04-09
修复
- #1532 修复 ‘Symfony\Component\EventDispatcher\EventDispatcherInterface’ 在 –no-dev 条件下安装会出现找不到接口的问题;
v1.1.24 - 2020-04-09
新增
- #1501 添加
Symfony命令行事件触发器,使之可以与hyperf/event组件结合使用; - #1502 为注解
Hyperf\AsyncQueue\Annotation\AsyncQueueMessage添加maxAttempts参数,用于控制消息失败时重复消费的次数; - #1510 添加
Hyperf/Utils/CoordinatorManager,用于提供更优雅的启动和停止服务,服务启动前不响应请求,服务停止前,保证某些循环逻辑能够正常结束; - #1517 为依赖注入容器的懒加载功能添加了对接口继承和抽象方法继承的支持;
- #1529 处理
response cookies中的SameSite属性;
修复
- #1494 修复单独使用
Redis组件时,注释@mixin会被当成注解的 BUG; - #1499 修复引入
hyperf/translation组件后,hyperf/constants组件的动态参数不生效的 BUG; - #1504 修复
RPC代理客户端无法正常处理返回值为nullable类型的方法; - #1507 修复
hyperf/consul组件的catalog注册方法调用会失败的 BUG;
v1.1.23 - 2020-04-02
新增
- #1467 为
filesystem组件添加默认配置; - #1469 为
Hyperf/Guzzle/HandlerStackFactory添加getHandler()方法,并尽可能的使用make()创建handler; - #1480 RPC client 现在会自动代理父接口的方法定义;
变更
- #1481 异步队列创建消息时,使用
make方法创建;
修复
- #1471 修复
NSQ组件,数据量超过max-output-buffer-size接收数据失败的BUG; - #1472 修复
NSQ组件,在消费者中发布消息时,会导致消费者无法正常消费的BUG; - #1474 修复
NSQ组件,requeue消息时,消费者会意外重启的BUG; - #1477 修复使用
Hyperf\Testing\Client::flushContext时,会引发Fixed Invalid argument supplied异常的BUG;
v1.1.22 - 2020-03-26
新增
- #1440 为 NSQ 的每个连接新增
enable配置项来控制连接下的所有消费者的自启功能; - #1451 新增 Filesystem 组件;
- #1459 模型 Collection 新增 macroable 支持;
- #1463 为 Guzzle Handler 增加
on_stats选项的功能支持;
变更
修复
- #1445 修复命令
describe:routes缺失了带参数的路由; - #1449 修复了高基数请求路径的内存溢出的问题;
- #1454 修复 Collection 的
flatten()方法因为INF参数值为float类型导致无法使用的问题; - #1458 修复了 Guzzle 不支持 Elasticsearch 版本大于 7.0 的问题;
v1.1.21 - 2020-03-19
新增
- #1393 为
Hyperf\HttpMessage\Stream\SwooleStream实现更多的方法; - #1419 允许 ConfigFetcher 通过一个协程启动而无需额外启动一个进程;
- #1424 允许用户通过配置文件的形式修改
session_name配置; - #1435 为模型缓存增加
use_default_value属性来自动修正缓存数据与数据库数据之间的差异; - #1436 为 NSQ 消费者增加
isEnable()方法来控制消费者进程是否启用自启功能;
v1.1.20 - 2020-03-12
新增
- #1402 增加
Hyperf\DbConnection\Annotation\Transactional注解来自动开启一个事务; - #1412 增加
Hyperf\View\RenderInterface::getContents()方法来直接获取 View Render 的渲染内容; - #1416 增加 Swoole 事件常量
ON_WORKER_ERROR.
修复
- #1405 修复当模型存在
hidden属性时,模型缓存功能缓存的字段数据不正确的问题; - #1410 修复 Tracer 无法追踪由
Hyperf\Redis\RedisFactory创建的连接的调用链; - #1415 修复阿里 ACM 客户端在当
SecurityTokenHeader 为空时 sts token 会解密失败的问题;
v1.1.19 - 2020-03-05
新增
- #1339 #1394 新增
describe:routes命令来显示路由的细节信息; - #1354 为
config-aliyun-acm组件新增 ecs ram authorization; - #1362 为
Hyperf\Pool\SimplePool\PoolFactory增加getPoolNames()来获取连接池的名称; - #1371 新增
Hyperf\DB\DB::connection()方法来指定要使用的连接; - #1384 为
gen:model命令新增property-case选项来设定成员属性的命名风格;
修复
- #1386 修复异步消息投递注解当用在存在可变参数的方法上失效的问题;
v1.1.18 - 2020-02-27
新增
- #1305 为
hyperf\metric组件添加预制的Grafana面板; - #1328 添加
ModelRewriteInheritanceVisitor来重写 model 类继承的gen:model命令; - #1331 添加
Hyperf\LoadBalancer\LoadBalancerInterface::getNodes(); - #1335 为
command添加AfterExecute事件; - #1361 logger 组件添加
processors配置;
修复
- #1330 修复当使用
(new Parallel())->add($callback, $key)并且参数$key并非 string 类型, 返回结果将会从 0 开始排序$key; - #1338 修复当从 server 设置自己的设置时, 主 server 的配置不生效的 bug;
- #1344 修复队列在没有设置最大消息数时每次都需要校验长度的 bug;
变更
- #1324 hyperf/async-queue 组件不再提供默认启用
Hyperf\AsyncQueue\Listener\QueueLengthListener;
优化
删除
- #1303 删除
Hyperf\RpcServer\Router\Router中无用的$httpMethod;
v1.1.17 - 2020-01-24
新增
- #1220 为 Apollo 组件增加 BootProcessListener 来实现在服务启动时从 Apollo 拉取配置的功能;
- #1292 为
Hyperf\Database\Schema\Blueprint::foreign()方法的返回类型增加了Hyperf\Database\Schema\ForeignKeyDefinition类型; - #1313 为
hyperf\crontab组件增加了 Command 模式支持; - #1321 增加 hyperf/nsq 组件,NSQ 是一个实时的分布式消息平台;
修复
- #1291 修复 hyperf/super-globals 组件的
$_SERVER存在小写键值与 PHP-FPM 不统一的问题; - #1308 修复 hyperf/validation 组件缺失的一些翻译内容, 包括 gt, gte, ipv4, ipv6, lt, lte, mimetypes, not_regex, starts_with, uuid;
- #1310 修复服务注册在当服务同名不同协议的情况下会被覆盖的问题;
- #1315 修复
Hyperf\AsyncQueue\Process\ConsumerProcess类缺失的 $config 变量;
v1.1.16 - 2020-01-16
新增
- #1263 为 async-queue 组件增加
QueueLength事件; - #1276 为 Consul 客户端增加 ACL token 支持;
- #1277 为 hyperf/metric 组件增加 NoOp 驱动,用来临时关闭 metric 功能;
修复
- #1262 修复 keepaliveIO 功能下 socket 会被消耗光的问题;
- #1266 修复当自定义进程存在 Timer 的情况下会无法重启的问题;
- #1272 修复 JSONRPC 下当 Request ID 为 null 时检查会失败的问题;
优化
- #1273 优化 gRPC 客户端:
- 优化使 gRPC 客户端在当连接与 Server 断开时会自动重连;
- 优化使当 gRPC 客户端被垃圾回收时,已建立的连接会自动关闭;
- 修复关闭了的客户端依旧会持有 HTTP2 连接的问题;
- 修复 gRPC 客户端的 channel pool 可能会存在非空 channel 的问题;
- 优化使 gRPC 客户端会自动初始化,所以现在可以在构造函数和容器注入下使用;
删除
- #1286 从 require-dev 中移除 phpstan/phpstan 包的依赖。
v1.1.15 - 2020-01-10
修复
v1.1.14 - 2020-01-10
新增
- #1166 为 AMQP 增加 KeepaliveIO 功能;
- #1208 为 JSON-RPC 的响应增加了
error.data.code值来传递 Exception Code; - #1208 为
Hyperf\Rpc\Contract\TransporterInterface增加了recv方法; - #1215 新增 hyperf/super-globals 组件,用来适配一些不支持 PSR-7 的第三方包;
- #1219 为 AMQP 消费者增加
enable属性,通过该属性来控制该消费者是否跟随 Server 一同启动;
修复
- #1208 修复 Exception 和 error 在 JSON-RPC TCP Server 下无法被正确处理的问题;
- #1208 修复 JSON-RPC 没有检查 Request ID 和 Response ID 是否一致的问题;
- #1223 修复 ConfigProvider 扫描器不会扫描 composer.json 内 require-dev 的配置;
- #1254 修复执行
init-proxy.sh命令在某些环境如 Alpine 下会报 bash 不存在的问题;
优化
- #1208 优化了 JSON-RPC 组件的部分逻辑;
- #1174 调整了
Hyperf\Utils\Parallel在输出异常时的格式,现在会一同打印 Trace 信息; - #1224 允许 Aliyun ACM 配置中心的配置获取进程解析 UTF-8 字符,同时在 Worker 启动后会自动获取一次配置,以及拉取的配置现在会传递到自定义进程了;
- #1235 在 AMQP 生产者执行 declare 后释放对应的连接;
修改
- #1227 升级
jcchavezs/zipkin-php-opentracing依赖至 0.1.4 版本;
v1.1.13 - 2020-01-03
新增
- #1137
constants组件增加国际化支持; - #1165
Hyperf\HttpServer\Contract\RequestInterface新增route方法; - #1195 注解
Cacheable和CachePut增加最大超时时间偏移量配置; - #1204
database组件增加了insertOrIgnore方法; - #1216
RenderInterface::render()方法的$data参数,添加了默认值; - #1221
swoole-tracker组件添加了traceId和spanId;
修复
- #1175 修复
Hyperf\Utils\Collection::random当传入null时,无法正常工作的BUG; - #1199 修复使用
Task注解时,参数无法使用动态变量的BUG; - #1200 修复
metric组件,请求路径会携带参数的BUG; - #1210 修复验证器规则
size无法作用于integer的BUG;
优化
- #1211 自动将项目名转化为
prometheus的规范命名;
修改
- #1217 将
zendframework/zend-mime替换为laminas/laminas-mine;
v1.1.12 - 2019-12-26
新增
- #1177 为
jsonrpc组件增加了新的协议jsonrpc-tcp-length-check,并对部分代码进行了优化;
修复
- #1175 修复
Hyperf\Utils\Collection::random方法不支持传入null; - #1178 修复
Hyperf\Database\Query\Builder::chunkById方法不支持元素是array的情况; - #1189 修复
Hyperf\Utils\Collection::operatorForWhere方法,operator只能传入string的 BUG;
优化
- #1186 日志配置中,只填写
formatter.class的情况下,可以使用默认的formatter.constructor配置;
v1.1.11 - 2019-12-19
新增
- #849 为 hyperf/tracer 组件增加 span tag 配置功能;
修复
- #1142 修复
Register::resolveConnection会返回 null 的问题; - #1144 修复配置文件形式下服务限流会失效的问题;
- #1145 修复
CoroutineMemoryDriver::delKey方法的返回值错误的问题; - #1153 修复验证器的
alpha_num规则无法按预期运行的问题;
v1.1.10 - 2019-12-12
修复
- #1104 修复了 Guzzle 客户端的重试中间件的状态码识别范围为 2xx;
- #1105 修复了 Retry 组件在重试尝试前不还原管道堆栈的问题;
- #1106 修复了数据库在开启
sticky模式时连接回归连接池时没有重置状态的问题; - #1119 修复 TCP 协议下的 JSONRPC Server 在解析 JSON 失败时无法正确的返回预期的 Error Response 的问题;
- #1124 修复 Session 中间件在储存当前的 URL 时,当 URL 以
/结尾时会忽略斜杠的问题;
变更
- #1108 重命名
Hyperf\Tracer\Middleware\TraceMiddeware为Hyperf\Tracer\Middleware\TraceMiddleware; - #1108 升级
Hyperf\ServiceGovernance\Listener\ServiceRegisterListener类的成员属性和方法的等级为protected,以便更好的重写相关方法;
v1.1.9 - 2019-12-05
新增
- #948 为 DI Container 增加懒加载功能;
- #1044 为 AMQP Consumer 增加
basic_qos配置; - #1056 #1081 DI Container 增加
define()和set()方法,同时增加Hyperf\Contract\ContainerInterface; - #1059
job.stub模板增加构造函数; - #1084 支持 PHP 7.4,TrvisCI 增加 PHP 7.4 运行支持;
修复
- #1007 修复
vendor:: publish的命令返回值; - #1049 修复
Hyperf\Cache\Driver\RedisDriver::clear会有可能删除所有缓存失败的问题; - #1055 修复 Image 验证时后缀大小写的问题;
- #1085 #1091 Fixed
@Retry注解使用时会找不到容器的问题;
v1.1.8 - 2019-11-28
新增
修复
变更
- #1021 WebSocket 客户端新增默认端口支持,根据协议默认为 80 和 443;
- #1034 去掉了
Hyperf\Amqp\Builder\Builder的arguments参数的 array 类型限制,允许接受其他类型如 AmqpTable;
优化
- #1014 优化
Command::execute的返回值类型; - #1022 提供更清晰友好的连接池报错信息;
- #1039 在 CoreMiddleware 中自动设置最新的 ServerRequest 对象到 Context;
v1.1.7 - 2019-11-21
新增
- #860 新增 hyperf/retry 组件;
- #952 新增 ThinkTemplate 视图引擎支持;
- #973 新增 JSON RPC 在 TCP 协议下的连接池支持,通过
Hyperf\JsonRpc\JsonRpcPoolTransporter来使用连接池版本; - #976 为
hyperf/amqp组件新增close_on_destruct选项参数,用来控制代码在执行析构函数时是否主动去关闭连接;
变更
- #944 将组件内所有使用
@Listener和@Process注解来注册的改成通过ConfigProvider来注册; - #977 调整
init-proxy.sh命令的行为,改成只删除runtime/container目录;
修复
- #955 修复
hyperf/db组件的port和charset参数无效的问题; - #956 修复模型缓存中使用到
RedisHandler::incr在集群模式下会失败的问题; - #966 修复当在非 Worker 进程环境下使用分页器会报错的问题;
- #968 修复当
classes和annotations两种 Aspect 切入模式同时存在于一个类时,其中一个可能会失效的问题; - #980 修复 Session 组件内
migrate,save核has方法无法使用的问题; - #982 修复
Hyperf\GrpcClient\GrpcClient::yield在获取 Channel Pool 时没有通过正确的获取方式去获取的问题; - #987 修复通过
gen:command命令生成的命令类缺少调用parent::configure()方法的问题;
优化
- #991 优化
Hyperf\DbConnection\ConnectionResolver::connection的异常情况处理;
v1.1.6 - 2019-11-14
新增
- #827 新增了极简的高性能的 DB 组件;
- #905 视图组件增加了
twig模板引擎; - #911 定时任务支持多实例情况下,只运行单一实例的定时任务;
- #913 增加监听器
Hyperf\ExceptionHandler\Listener\ErrorExceptionHandler; - #921 新增
Session组件; - #931 阿波罗配置中心增加
strict_mode,自动将配置转化成对应数据类型; - #933 视图组件增加了
plates模板引擎; - #937 Nats 组件添加消费者消费和订阅事件;
- #941 新增
Zookeeper配置中心;
变更
- #934 修改
WaitGroup继承\Swoole\Coroutine\WaitGroup;
修复
- #897 修复
Nats消费者,pool配置无效的 BUG; - #901 修复
GraphQL组件,Factory注解无法正常使用的 BUG; - #903 修复添加
hyperf/rpc-client依赖后,init-proxy脚本无法正常停止的 BUG; - #904 修复监听器监听
Hyperf\Framework\Event\BeforeMainServerStart事件时,无法使用IO操作的 BUG; - #906 修复
Hyperf\HttpMessage\Server\Request端口获取有误的 BUG; - #907 修复
Nats组件requestSync方法,超时时间不准确的 BUG; - #909 修复
Parallel内逻辑抛错后,无法正常停止的 BUG; - #925 修复因
Socket无法正常建立,导致进程频繁重启的 BUG; - #932 修复
Translator::setLocale在协程环境下,数据混淆的 BUG; - #940 修复
WebSocketClient::push方法finish参数类型错误;
优化
- #907 优化
Nats消费者频繁重启; - #928
Hyperf\ModelCache\Cacheable::query批量修改数据时,可以删除对应缓存; - #936 优化调用模型缓存
increment时,可能因并发情况导致的数据有错;
v1.1.5 - 2019-11-07
新增
- #812 新增计划任务在集群下仅执行一次的支持;
- #820 新增 hyperf/nats 组件;
- #832 新增
Hyperf\Utils\Codec\Json; - #833 新增
Hyperf\Utils\Backoff; - #852 为
Hyperf\Utils\Parallel新增clear()方法来清理所有已添加的回调; - #854 新增
Hyperf\GraphQL\GraphQLMiddleware用于解析 GraphQL 请求; - #859 新增 Consul 集群的支持,现在可以从 Consul 集群中拉取服务提供者的节点信息;
- #873 新增 Redis 集群的客户端支持;
修复
- #831 修复 Redis 客户端连接在 Redis Server 重启后不会自动重连的问题;
- #835 修复
Request::inputs方法的默认值参数与预期效果不一致的问题; - #841 修复数据库迁移在多数据库的情况下连接无效的问题;
- #844 修复 Composer 阅读器不支持根命名空间的用法的问题;
- #846 修复 Redis 客户端的
scan,hScan,zScan,sScan无法使用的问题; - #850 修复 Logger group 在 name 一样时不生效的问题;
优化
- #832 优化了 Response 对象在转 JSON 格式时的异常处理逻辑;
- #840 使用
\Swoole\Timer::*来替代swoole_timer_*函数; - #859 优化了 RPC 客户端去 Consul 获取健康的节点信息的逻辑;
v1.1.4 - 2019-10-31
新增
- #778
Hyperf\Testing\Client新增PUT和DELETE方法; - #784 新增服务监控组件;
- #795
AbstractProcess增加restartInterval参数,允许子进程异常或正常退出后,延迟重启; - #804
Command增加事件BeforeHandleAfterHandle和FailToHandle;
变更
- #793
Pool::getConnectionsInChannel方法由protected改为public. - #811 命令
di:init-proxy不再主动清理代理缓存,如果想清理缓存请使用命令vendor/bin/init-proxy.sh;
修复
- #779 修复
JPG文件验证不通过的问题; - #787 修复
db:seed参数--class多余,导致报错的问题; - #795 修复自定义进程在异常抛出后,无法正常重启的 BUG;
- #796 修复
etcd配置中心enable即时设为false,在项目启动时,依然会拉取配置的 BUG;
优化
v1.1.3 - 2019-10-24
新增
- #745 为
gen:model命令增加with-comments选项,以标记是否生成字段注释; - #747 为 AMQP 消费者增加
AfterConsume,BeforeConsume,FailToConsume事件; - #762 为 Parallel 特性增加协程控制功能;
变更
- #767 重命名
AbstractProcess的running属性名为listening;
修复
- #741 修复执行
db:seed命令缺少文件名报错的问题; - #748 修复
SymfonyNormalizer不处理array类型数据的问题; - #769 修复当 JSON RPC 响应的结果的 result 和 error 属性为 null 时会抛出一个无效请求的问题;
v1.1.2 - 2019-10-17
新增
- #722 为 AMQP Consumer 新增
concurrent.limit配置来对协程消费进行速率限制;
变更
- #678 为
gen:model命令增加ignore-tables参数,同时默认屏蔽migrations表,即migrations表对应的模型在执行gen:model命令时不会生成;
修复
- #694 修复
Hyperf\Validation\Request\FormRequest的validationData方法不包含上传的文件的问题; - #700 修复
Hyperf\HttpServer\Contract\ResponseInterface的download方法不能按预期运行的问题; - #701 修复自定义进程在出现未捕获的异常时不会自动重启的问题;
- #704 修复
Hyperf\Validation\Middleware\ValidationMiddleware在 action 参数没有定义参数类型时会报错的问题; - #713 修复当开启了注解缓存功能是,
ignoreAnnotations不能按预期工作的问题; - #717 修复
getValidatorInstance方法会重复创建验证器对象的问题; - #724 修复
db:seed命令在没有传database参数时会报错的问题; - #729 修正组件配置项
db:model为gen:model; - #737 修复非 Worker 进程下无法使用 Tracer 组件来追踪调用链的问题;
v1.1.1 - 2019-10-08
Fixed
- #664 调整通过
gen:request命令生成 FormRequest 时authorize方法的默认返回值; - #665 修复启动时永远会自动生成代理类的问题;
- #667 修复当访问一个不存在的路由时
Hyperf\Validation\Middleware\ValidationMiddleware会抛出异常的问题; - #672 修复当 Action 方法上的参数类型为非对象类型时
Hyperf\Validation\Middleware\ValidationMiddleware会抛出一个未捕获的异常的问题; - #674 修复使用
gen:model命令从数据库生成模型时模型表名错误的问题;
v1.1.0 - 2019-10-08
新增
- #401 新增了
Hyperf\HttpServer\Router\Dispatched对象来储存解析的路由信息,在用户中间件之前便解析完成以便后续的使用,同时也修复了路由里带参时中间件失效的问题; - #402 新增
@AsyncQueueMessage注解,通过定义此注解在方法上,表明这个方法的实际运行逻辑是投递给 Async-Queue 队列去消费; - #418 允许发送 WebSocket 消息到任意的 fd,即使当前的 Worker 进程不持有对应的 fd,框架会自动进行进程间通讯来实现发送;
- #420 为数据库模型增加新的事件机制,与 PSR-15 的事件调度器相配合,可以解耦的定义 Listener 来监听模型事件;
- #429 #643 新增 Validation 表单验证器组件,这是一个衍生于 illuminate/validation 的组件,感谢 Laravel 开发组提供如此好用的验证器组件,;
- #441 当 Redis 连接处于低使用频率的情况下自动关闭空闲连接;
- #478 更好的适配 OpenTracing 协议,同时适配 Jaeger,Jaeger 是一款优秀的开源的端对端分布式调用链追踪系统;
- #500 为
Hyperf\HttpServer\Contract\ResponseInterface增加链式方法调用支持,解决调用了代理方法的方法后无法再调用原始方法的问题; - #523 为
gen:model命令新增了table-mapping选项; - #555 新增了一个全局函数
swoole_hook_flags来获取由常量SWOOLE_HOOK_FLAGS所定义的 Runtime Hook 等级,您可以在bin/hyperf.php通过! defined('SWOOLE_HOOK_FLAGS') && define('SWOOLE_HOOK_FLAGS', SWOOLE_HOOK_ALL);的方式来定义该常量,即 Runtime Hook 等级; - #596 为
@Inject注解增加了required参数,当您定义@Inject(required=false)注解到一个成员属性上,那么当该依赖项不存在时也不会抛出Hyperf\Di\Exception\NotFoundException异常,而是以默认值null来注入,required参数的默认值为true,当在构造器注入的情况下,您可以通过对构造器的参数定义为nullable来达到同样的目的; - #597 为 AsyncQueue 组件的消费者增加
Concurrent来控制消费速率; - #599 为 AsyncQueue 组件的消费者增加根据当前重试次数来设定该消息的重试等待时长的功能,可以为消息设置阶梯式的重试等待;
- #619 为 Guzzle 客户端增加 HandlerStackFactory 类,以便更便捷地创建一个 HandlerStack;
- #620 为 AsyncQueue 组件的消费者增加自动重启的机制;
- #629 允许通过配置文件的形式为 Apollo 客户端定义
clientIp,pullTimeout,intervalTimeout配置; - #647 根据 server 的配置,自动为 TCP Response 追加
eof; - #648 为 AMQP Consumer 增加
nack的返回类型,当消费逻辑返回Hyperf\Amqp\Result::NACK时抽象消费者会以basic_nack方法来响应消息; - #654 增加所有 Swoole Event 的默认回调和对应的 Hyperf 事件;
变更
- #437
Hyperf\Testing\Client在遇到异常时不再直接抛出异常而是交给 ExceptionHandler 流程处理; - #463 简化了
container.php文件及优化了注解缓存机制;
新的 config/container.php 文件内容如下:
<?php
use Hyperf\Di\Container;
use Hyperf\Di\Definition\DefinitionSourceFactory;
use Hyperf\Context\ApplicationContext;
$container = new Container((new DefinitionSourceFactory(true))());
if (! $container instanceof \Psr\Container\ContainerInterface) {
throw new RuntimeException('The dependency injection container is invalid.');
}
return ApplicationContext::setContainer($container);- #486
Hyperf\HttpMessage\Server\Request的getParsedBody方法现在可以直接处理 JSON 格式的数据了; - #523 调整
gen:model命令生成的模型类名默认为单数,如果表名为复数,则默认生成的类名为单数; - #614 #617 调整了 ConfigProvider 类的结构, 同时将
config/dependencies.php文件移动到了config/autoload/dependencies.php内,且文件结构去除了dependencies层,此后也意味着您也可以将dependencies配置写到config/config.php文件内;
Config Provider 内数据结构的变化: 之前:
'scan' => [
'paths' => [
__DIR__,
],
'collectors' => [],
],现在:
'annotations' => [
'scan' => [
'paths' => [
__DIR__,
],
'collectors' => [],
],
],增加了一层 annotations,这样将与配置文件结构一致,不再特殊
- #630 变更了
Hyperf\HttpServer\CoreMiddleware类的实例化方式,使用make()来替代了new; - #631 变更了 AMQP Consumer 的实例化方式,使用
make()来替代了new; - #637 调整了
Hyperf\Contract\OnMessageInterface和Hyperf\Contract\OnOpenInterface的第一个参数的类型约束, 使用Swoole\WebSocket\Server替代Swoole\Server; - #638 重命名了
db:model命令为gen:model命令,同时增加了一个 Visitor 来优化创建的$connection成员属性,如果要创建的模型类的$connection属性的值与继承的父类一致,那么创建的模型类将不会包含此属性;
移除
- #401 移除了
Hyperf\JsonRpc\HttpServerFactory,Hyperf\HttpServer\ServerFactory,Hyperf\GrpcServer\ServerFactory类; - #402 移除了弃用的
AsyncQueue::delay方法; - #563 移除了弃用的
Hyperf\Server\ServerInterface::SERVER_TCP常量,使用Hyperf\Server\ServerInterface::SERVER_BASE来替代; - #602 移除了
Hyperf\Utils\Coroutine\Concurrent的timeout参数; - #612 移除了 RingPHP Handler 里没有使用到的
$url变量; - #616 #618 移除了 Guzzle 里一些无用的代码;
优化
- #644 优化了注解扫描的流程,分开
app和vendor两部分来扫描注解,大大减少了用户的扫描耗时; - #653 优化了 Swoole shortname 的检测逻辑,现在的检测逻辑更加贴合 Swoole 的实际配置场景,也不只是
swoole.use_shortname = "Off"才能通过检测了;