v3.2.0 - 2026-06-07
v3.2.0 - 2026-06-07
不兼容变更
-
Carbon 组件的不兼容变更
Carbon::createFromTimestamp()在v3.0中不再通过date_default_timezone_get()读取默认时区。Carbon::diffInDays()默认情况下不再返回绝对值。请使用$absolute参数来控制结果是否为绝对值。
-
#7625 为了术语一致性,将 async-queue 组件中的
JobInterface::getQueueName()重命名为getPoolName()。
<?php
// 变更前
class CustomJob extends \Hyperf\AsyncQueue\Job
{
public function getQueueName(): string
{
return 'custom';
}
}
// 变更后
class CustomJob extends \Hyperf\AsyncQueue\Job
{
public function getPoolName(): string
{
return 'custom';
}
}<?php
use Carbon\Carbon;
$t = time();
# 不兼容的用法
Carbon::createFromTimestamp($t, date_default_timezone_get());
# 正确的用法
Carbon::createFromTimestamp($t, date_default_timezone_get());logger配置结构已变更。请参考 #7563。
<?php
// 变更前
return [
'default' => [
'driver' => 'daily',
'path' => BASE_PATH . '/runtime/logs/hyperf.log',
'level' => env('LOG_LEVEL', 'debug'),
'days' => 7,
],
];
// 变更后
return [
'default' => 'default',
'channels' => [
'default' => [
'driver' => 'daily',
'path' => BASE_PATH . '/runtime/logs/hyperf.log',
'level' => env('LOG_LEVEL', 'debug'),
'days' => 7,
],
// 在此处添加你自定义的 channel
],
];cache配置结构已变更。请参考 #7594。
<?php
// 变更前
return [
'default' => [
'driver' => RedisDriver::class,
'packer' => PhpSerializerPacker::class,
'prefix' => 'c:',
],
];
// 变更后
return [
'default' => env('CACHE_DRIVER', 'default'),
'stores' => [
'default' => [
'driver' => RedisDriver::class,
'packer' => PhpSerializerPacker::class,
'prefix' => 'c:',
],
],
];- 使用
swow时新增依赖。
config/autoload/dependencies.php
<?php
use Hyperf\Contract\ResponseEmitterInterface;
use Hyperf\Engine\ResponseEmitter;
return [
ResponseEmitterInterface::class => ResponseEmitter::class,
];注意
- 如果你已经升级到 PHP 8.4,请注意
fgetcsv和fputcsv方法现在都需要为escape参数提供默认值。
fputcsv($fp, $fields) 必须修改为 fputcsv($fp, $fields, escape: '')
fgetcsv($fp) 必须修改为 fgetcsv($fp, escape: '')依赖升级
- 升级 php 版本至
>=8.2 - 升级
elasticsearch/elasticsearch版本至^8.0 || ^9.0 - 升级
nikic/php-parser版本至5.6 - 升级
symfony/*组件至^6.0 || ^7.0 - 升级
phpunit/phpunit版本至^11.0 - 升级
google/protobuf版本至^3.6.1 || ^4.2。 - 升级
guzzlehttp/guzzle版本至^7.0。
移除
- #7278 移除已废弃的
laminas/laminas-mime包。 - #7573 移除已废弃的
Hyperf\Serializer\Contract\CacheableSupportsMethodInterface接口。 - #7609 移除
Hyperf\AsyncQueue\JobMessage序列化中的向后兼容代码。 - #7610 移除计划在 v3.2 移除的废弃代码,包括 Collection 向后兼容代码、ProxyTrait 参数映射、
ResumeExitCoordinatorListener、SocketIO Futureflag参数以及 WebSocketHandeShakeException拼写错误的别名。
优化
- #6804 优化了使用
Hyperf\Di\ReflectionManager::getAllClassesByFinder()时从文件读取内容的代码。 - #7142 增强
Arr::shuffle方法以支持自定义随机引擎。 - #7431 优化
toCssClasses和toCssStyles方法,通过直接使用输入数组来简化代码逻辑。 - #7523 使用 PHP 8.4+ 的函数(带 polyfill)现代化 array 工具和 JSON 校验。
- #7620 新增 Symfony 7.4 兼容性,支持批量命令注册。
- #7653 通过将
Grpc\StringifyAble替换为Google\Rpc\Status对象改进Parser::parseResponse的返回值格式,以获得更好的标准化和代码可读性。 - #7658 优化事件监听器提供者,为非匿名事件类添加缓存以避免重复的监听器解析。
新增
- #6538 支持根据
job指定队列名称。 - #6591 支持
nesbot/carbon的v3.0。 - #6761 为
Hyperf\Contract\Jsonable新增toJson方法。 - #6794 为 HTTP 响应新增
Htmlable契约接口。 - #7019 新增 PHP 8.4 的 PDO 子类支持。
- #7198 为
QueryException新增连接名。 - #7202 新增对 elasticsearch
8.x的支持。 - #7629 新增对 elasticsearch
9.x的支持。 - #7214 改进
Hyperf\Support\Fluent。 - #7247 新增
Hyperf\Pipeline\Pipeline::finally()。 - #7274 支持在
Hyperf\Collection\Collection中的shift()和pop()取出多个元素。 - #7302 为
Hyperf\Collection\Arr新增partition()和reject()。 - #7312 为
Hyperf\Context\Context新增Macroable支持。 - #7605 新增
NonCoroutine注解,用于灵活控制测试执行。 - #7618 为异步队列消费者进程新增一种注册模式,支持基于配置自动注册,无需在
config/autoload/processes.php中手动注册进程。 - #7621 为
StdoutLogger输出格式新增时间戳前缀。 - #7717 新增
database-sqlserver包。
变更
- #6760 将
hyperf/database中deleted_at的默认类型变更为datetime。 - #7208 当传入值小于零时,
Hyperf\Database\Query\Builder::limit()将抛出异常。 - #7372 函数
str_getcsv使用空字符串作为escape。 - #7462 将
influxdb/influxdb-php替换为influxdata/influxdb-client-php。 - #7563 变更
logger的配置结构。 - #7594 变更
cache的配置结构。 - #7615 将 async-queue 组件中
ConsumerProcess的$queue属性重命名为$pool。 - #7625 为了术语一致性,将 async-queue 组件中的
getQueueName()重命名为getPoolName()。 - #7714 不再支持 Monolog 2.x,仅支持 3.x。
修复
- #6934 修复
sortByMany()与sortBy()返回结果不一致的 bug。