跳至内容
v3.2.0 - 2026-06-07

v3.2.0 - 2026-06-07

不兼容变更

  1. Carbon 组件的不兼容变更

    • Carbon::createFromTimestamp()v3.0 中不再通过 date_default_timezone_get() 读取默认时区。
    • Carbon::diffInDays() 默认情况下不再返回绝对值。请使用 $absolute 参数来控制结果是否为绝对值。
  2. #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());
  1. 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
    ],
];
  1. 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:',
        ],
    ],
];
  1. 使用 swow 时新增依赖。

config/autoload/dependencies.php

<?php
use Hyperf\Contract\ResponseEmitterInterface;
use Hyperf\Engine\ResponseEmitter;

return [
    ResponseEmitterInterface::class => ResponseEmitter::class,
];

注意

  1. 如果你已经升级到 PHP 8.4,请注意 fgetcsvfputcsv 方法现在都需要为 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 Future flag 参数以及 WebSocket HandeShakeException 拼写错误的别名。

优化

  • #6804 优化了使用 Hyperf\Di\ReflectionManager::getAllClassesByFinder() 时从文件读取内容的代码。
  • #7142 增强 Arr::shuffle 方法以支持自定义随机引擎。
  • #7431 优化 toCssClassestoCssStyles 方法,通过直接使用输入数组来简化代码逻辑。
  • #7523 使用 PHP 8.4+ 的函数(带 polyfill)现代化 array 工具和 JSON 校验。
  • #7620 新增 Symfony 7.4 兼容性,支持批量命令注册。
  • #7653 通过将 Grpc\StringifyAble 替换为 Google\Rpc\Status 对象改进 Parser::parseResponse 的返回值格式,以获得更好的标准化和代码可读性。
  • #7658 优化事件监听器提供者,为非匿名事件类添加缓存以避免重复的监听器解析。

新增

  • #6538 支持根据 job 指定队列名称。
  • #6591 支持 nesbot/carbonv3.0
  • #6761Hyperf\Contract\Jsonable 新增 toJson 方法。
  • #6794 为 HTTP 响应新增 Htmlable 契约接口。
  • #7019 新增 PHP 8.4 的 PDO 子类支持。
  • #7198QueryException 新增连接名。
  • #7202 新增对 elasticsearch 8.x 的支持。
  • #7629 新增对 elasticsearch 9.x 的支持。
  • #7214 改进 Hyperf\Support\Fluent
  • #7247 新增 Hyperf\Pipeline\Pipeline::finally()
  • #7274 支持在 Hyperf\Collection\Collection 中的 shift()pop() 取出多个元素。
  • #7302Hyperf\Collection\Arr 新增 partition()reject()
  • #7312Hyperf\Context\Context 新增 Macroable 支持。
  • #7605 新增 NonCoroutine 注解,用于灵活控制测试执行。
  • #7618 为异步队列消费者进程新增一种注册模式,支持基于配置自动注册,无需在 config/autoload/processes.php 中手动注册进程。
  • #7621StdoutLogger 输出格式新增时间戳前缀。
  • #7717 新增 database-sqlserver 包。

变更

  • #6760hyperf/databasedeleted_at 的默认类型变更为 datetime
  • #7208 当传入值小于零时,Hyperf\Database\Query\Builder::limit() 将抛出异常。
  • #7372 函数 str_getcsv 使用空字符串作为 escape
  • #7462influxdb/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。