跳至内容
v3.1.70 - 2026-06-15

v3.1.70 - 2026-06-15

优化

  • #7761 优化方法 Hyperf\Coordinator\Timer::tick() 的执行逻辑运行于 Hyperf\Coroutine\wait() 方法中,以确保运行在独立的协程环境里。
  • #7761 优化方法 wait() 优先检查 Hyperf\Coroutine\Waiter 是否存在容器中。

v3.1.69 - 2026-05-09

修复

  • #7731 修复了 Hyperf\HttpServer\Response 的 Macroable 无法工作的 bug。
  • #7734 修复了在长生命周期环境下使用 Redis::pipeline() 时内存泄漏的 bug。
  • #7736 修复了 RedisDriver 中 keys 方法在 sMembers 返回非数组值时无法返回数组的 bug。
  • #7737 修复了 PostgresProcessor 在 columns 为 null 时无法处理索引和外键的 bug。
  • #7745 修复了使用 Swoole 6.2.0 时 getUri()->getHost() 返回服务器 IP 而非域名的 bug,原因是 getUriFromGlobals() 中 server_addr 的优先级高于 header[‘host’]。

v3.1.68 - 2026-04-21

修复

  • #7738 修复 Hyperf\Database\Concerns\BuildsQueries::getOriginalColumnNameForCursorPagination 无法正常使用的BUG。
  • #7739 修复使用 nacos 时,因为服务不存在,导致无法启动的问题。
  • #7740 修复 Aws\Handler\GuzzleV6\GuzzleHandler 找不到的问题。

优化

  • #7741 优化方法 Hyperf\Amqp\Message\Message::getTypeString() 避免成员变量与 getter 冲突的问题。统一使用 getter 读取。

v3.1.67 - 2026-02-24

新增

  • #7459 使用验证器规则 existsunique 时,支持使用形如 App\\Model\\User 的模型写法。
  • #7555 新增 Hyperf\Crontab\Mutex\RedisServerMutexByNodeName
  • #7607hyperf/database 增加新的模型自定义类型转换器 AsCollection
  • #7648nacos 支持阿里云 mse 签名。

优化

  • #7676 优化 hyperf/tracer 组件的客户端标签写法。

修复

  • #7703 修复 hyperf/cache 内存适配器不支持默认 ttl 的问题。
  • #7705 修复 Hyperf\Database\Query\Builder::eachById 无法正常使用的问题。
  • #7712 修复 classes 等扫描缓存解析失败导致报错的问题。

v3.1.66 - 2026-01-25

新增

  • #7667 #7672hyperf/grpc-client 新增参数 client_count 用来支持创建多个客户端。
  • #7668Hyperf\Guzzle\PoolHandler 新增参数 $isCookiePersistent 用来支持是否持久化 Cookies
  • #7670 为文件生成命令增加 --path 选项,用来指定生成位置。
  • #7684 新增方法 Hyperf\Database\Schema\Builder::withoutForeignKeyConstraints()
  • #7693ForeignKeyDefinition 新增方法 cascadeOnDelete(), restrictOnDelete(), noActionOnDelete(), restrictOnUpdate(), nullOnUpdate(), noActionOnUpdate()
  • #7698 新增方法 Pool::flushAll()PoolFactory::flushAll()
  • #7699QueryBuilder 新增方法 whereJsonContainsKey(), orWhereJsonContainsKey(), whereJsonDoesntContainKey(), orWhereJsonDoesntContainKey()

优化

  • #7675metric 组件删除多余的定时器清理代码。
  • #7687JSON-RPC 组件增加默认捕获 ValidationException 的逻辑。

修复

  • #7669 修复 PostgreSQL 组件中 boolean 格式问题。
  • #7682 修复 Blueprint::foreign() 返回值注释错误。

v3.1.65 - 2025-12-04

新增

  • #7585 新增事件 Hyperf\Kafka\Event\FailToAckHyperf\Kafka\Event\FailToRequeue
  • #7632 增加 thecodingmachine/graphqlite:^8.1 的支持。
  • #7644 新增 Str::uuidv7()

优化

  • #7649Hyperf\Metric\Listener\OnBeforeHandle 移除 AfterExecute 的事件监听。

v3.1.64 - 2025-11-12

新增

  • #7600 新增方法 Hyperf\Collection\Arr::sole()
  • #7601 增加异步队列消息执行结果枚举 Hyperf\AsyncQueue\Result

优化

  • #7604 优化异步队列 AsyncQueueMessage 注解支持定义在 protectedprivate 方法上。
  • #7611Console::command() 增加注释 @param-closure-this,用来获得更好的 ide 代码提示。
  • #7615 把异步队列的消费者进程中的 $queue 参数重命名为 $pool

修复

  • #7596 修复使用验证器时,使用了不存在的场景值,导致报错的问题。

v3.1.63 - 2025-10-30

修复

  • #7536 修复 Hyperf\Validation\ValidationRuleParser::parseParameters() 不支持 PHP 8.4 的问题。
  • #7543 修复 nacos 组件代码没有严格符合 psr4 标准的问题。
  • #7554 修复参数 Redis 集群 context 参数在没有设置密码时,不生效的问题。
  • #7561 重置 Nacos\Application 的构造函数参数名。

新增

  • #7553hyperf/testing 组件增加 PATCH 方法的支持。

优化

  • #7511 优化 hyperf/database 的注释。
  • #7537swagger 组件,使用 priorityMiddleware 替代 middleware

v3.1.62 - 2025-10-11

新增

  • #7469 使用参数验证器时,支持通过场景值覆写参数验证规则。
  • #7531 为脚本 migrate:rollback 新增参数 batch
  • #7545 运行脚本最后自动执行 CoordinatorManager::until(Constants::WORKER_EXIT)->resume();

修复

  • #7547 修复 kafka 消费者配置成员变量 $pool 时,无法正常使用的问题。

v3.1.61 - 2025-09-04

新增

  • #7467 为 Nacos SDK 支持 v2 和 v3 版本。
  • #7476Hyperf\Support\Fluent 新增 trait InteractsWithData 支持。
  • #7480 新增方法 Hyperf\Database\Model\Builder::incrementOrCreate()
  • #7481 新增方法 Collection::doesntContainStrict()LazyCollection::doesntContainStrict()
  • #7483 新增 Hyperf\Database\Model\Relations\BelongsTo::dissociate() 的别名 disassociate()
  • #7484 新增方法 Hyperf\Database\Model\Model::isSoftDeletable()
  • #7486 新增方法 Hyperf\Database\Model\Builder::except()
  • #7487 新增模型对 ArrayObject 类型的转换器 Hyperf\Database\Model\Casts\AsArrayObject
  • #7492Hyperf\Pipeline\Pipeline 新增 trait Macroable 的支持。
  • #7499 新增常量 Hyperf\Kafka\Constants\KafkaStrategy::STICKY_ASSIGNOR
  • #7500 新增方法 Hyperf\Collection\Arr::push()Hyperf\Collection\Arr::array()
  • #7502 新增方法 Hyperf\Collection\Arr::hasAll()
  • #7509 新增 Hyperf\Codec\Packer\Resp3Packer
  • #7518 新增方法 Hyperf\Database\Query\Grammars\Grammar::whereValueBetween()

优化

  • #7501Hyperf\Macroable\Macroable::macro() 增加引用验证,避免使用引用导致代码执行结果不达预期的情况。

v3.1.60 - 2025-08-02

修复

  • #7447 修复 migrate:fresh 无法删除默认表的问题。
  • #7449 修复方法 Hyperf\Database\Migrations\Migrator::reset() 不支持传入 string 格式参数的问题。

新增

  • #7466Hyperf\Support\Fluent 新增方法 isEmpty / isNotEmpty / getIterator
  • #7473kafka 新增配置项 produce_retryproducer_retry_sleep

v3.1.59 - 2025-07-03

修复

  • #7421 修复当设置 Cookies 中某个值为 "" 时,无法正确删除此 Cookie 的问题。
  • #7424 修复使用 watcher 组件时,php 二进制文件路径带有空格会导致报错的问题。
  • #7427 修复验证器中 exclude 规则不可用的问题。

优化

  • #7394 当使用 Redis::transaction($callback)Redis::transaction($callback) 后,可以立即释放连接到连接池中。

v3.1.57 - 2025-06-23

修复

  • #7402 修复使用 pgsql-swoole 数据库时,参数 connect_timeout 无法正常工作的问题。
  • #7414 修复 sqlite 数据库迁移无法正常使用的问题。
  • #7420 修复使用模型缓存时,luasha 会在 Redis 重启时发生故障的问题。

优化

  • #7411 移除 Hyperf\Utils 组件。

v3.1.56 - 2025-06-05

修复

  • #7400 使用 pgsql 时,修复 gen:model 脚本无法正常使用的问题。
  • #7410 修复使用缓存模块时,内存适配器不支持 setMultiple 方法的问题。

新增

  • #7392AsCommandClosureCommand 增加 coroutine 选项。
  • #7404CacheAHead 注解增加 runAsync 参数,用来异步初始化缓存操作,但会导致返回值为 Null

v3.1.55 - 2025-05-15

Added

  • #7365logger 配置文件,增加 callable 方式支持。
  • #7381 新增 Hyperf\Database\PgSQL\Query\Grammars\PostgresGrammar\compileJsonOverlaps

Fixed

  • #7363 修复 Hyperf\HttpServer\Router\RouteCollector 中代码注释,解决 IDE 错误误报。
  • #7379 修复使用 PgSQLMigrator 功能时,PDO 适配器无法正常使用的问题。

v3.1.54 - 2025-04-27

新增

  • #7316hyperf/resource 组件增加支持重写 paginationInformation 方法的接口。
  • #7343 新增 Hyperf\Coroutine\Barrier

修复

  • #7328 修复使用 Blueprint 建表时,主动配置主键导致报错的问题。
  • #7334 修复 kafka 消息生产者,在链接断开后无法重连的问题。

v3.1.53 - 2025-04-03

修复

  • #7309 修复 Hyperf\Testing\Client 在使用非 POST 请求时,不支持 Json 结构的问题。
  • #7318 修复 WebSocket 客户端不支持接收 CloseFrame 的问题。
  • #7329 修复创建模型时,$connection 类型报错的问题。

新增

  • #7311 新增 Hyperf\Redis\Event\CommandExecuted::getFormatCommand()
  • #7313 新增验证器规则 contains, extensions and hex_color
  • #7314 增加 hyperf/db 组件中 pgsql 引擎的 schema 配置。
  • #7325Hyperf\Di\ReflectionType 增加注解元数据。
  • #7332 新增方法 Hyperf\Memory\LockManager::exists()

v3.1.52 - 2025-02-27

新增

  • #7200 新增方法 Hyperf\Database\Connection::scalar() 用于读取满足查询条件的第一行数据的第一个字段值。
  • #7279gen:model 增加解析 trait 中的 RelationAttribute 的功能。
  • #7286 新增方法 Hyperf\Coroutine\Coroutine::list()
  • #7291 当使用 Model::createOrFirst 读到 null 值时,抛出异常。

v3.1.51 - 2025-02-06

新增

  • #7250 新增 Hyperf\AsyncQueue\Driver\Driver::getConfig()
  • #7255Hyperf\Database\Model\Builder 新增 createOrFirst()createOrRestore()
  • #7259Hyperf\Database\Query\Builder 新增 existsOrdoesntExistOr
  • #7260 新增 Hyperf\Database\Query\Builder::sole()
  • #7261 新增 Hyperf\Database\Model\Model::discardChanges()
  • #7262 新增 Hyperf\Database\Model\Model::hasAppended()
  • #7263 新增 Hyperf\Coroutine\WaitConcurrent
  • #7265 新增 Hyperf\Command\Concerns\Prohibitable
  • #7269 新增 Hyperf\Redis\Event\CommandExecuted
  • #7273 使用命令创建文件后,支持使用 cursor 编辑器自动打开对应文件。

优化

  • #7258 优化读取 composer.lock 的代码实现。
  • #7276 使用 static::class 代替 get_called_class

v3.1.50 - 2025-01-09

修复

  • #7231 修复使用 WebSocket 时,错误的 OnMessage 处理器导致致命异常的问题。

新增

  • #7224 新增 Hyperf\Coroutine\Mutex
  • #7233AMQP 组件增加新配置项 connection_name 用于自定义连接名称。

优化

  • #7223 优化从 composer.lock 读取 extra 数据的代码。
  • #7227 优化 Hyperf\Support\SafeCaller 的代码,适配 PHPStan 静态检测。

v3.1.49 - 2024-12-17

优化

  • #7206 支持 Swoole 6.0 版本。
  • #7209 优化 AbstractPaginator::getUrlRange() 的实现方式。

v3.1.48 - 2024-12-12

优化

  • #7194 当数据库更新触发唯一键错误时,抛出异常 UniqueConstraintViolationException.
  • #7187 当使用单元测试时,支持从 Request 中读取 Server 相关参数。

修复

  • #7188 修复 Hyperf\HttpMessage\Server\ResponsePlusProxy 无法支持其他不携带 getCookies 方法的 Response 实现类。

新增

  • #7192 新增方法 Hyperf\Database\Model\Collection::findOrFail().

v3.1.47 - 2024-11-28

修复

  • #7176 修复使用 Swow 时,无法正常设置 Cookies 的问题。

v3.1.46 - 2024-11-21

新增

  • #7148hyperf/validation 增加 exclude 验证规则。
  • #7150hyperf/validation 增加部分验证规则,例如 accepted_if, ascii, date_equals 等。
  • #7151Hyperf\Testing\Concerns\RunTestsInCoroutine::runTestsInCoroutine() 增加钩子方法 beforeTestInCoroutineafterTestInCoroutine
  • #7156 新增方法 Hyperf\Database\Schema\Blueprint::engine()

v3.1.45 - 2024-11-14

新增

  • #7141 新增方法 Hyperf\Collection\Arr::shuffleAssoc
  • #7143 新增方法 Hyperf\Database\Model\Builder::findOr
  • #7147Model\Collection 增加方法 setVisiblesetHidden
  • #7149swagger 组件增加在配置中设置 serversinfo 的能力。

修复

  • #7133 修复使用 migration 时,主动配置 connection 不生效的问题。

v3.1.44 - 2024-10-24

新增

  • #7063Hyperf\Database\Schema\Blueprint 新增 nullableUuidMorphs uuidMorphsnullableNumericMorphs
  • #7070 新增 Blueprint::charset()Blueprint::collation()
  • #7071 新增 Hyperf\Database\Schema\Blueprint::tinyText()
  • #7110 支持禁用 class morphs

修复

  • #7124 修复 sortByMany 方法使用 SORT_NATURAL 时,因数据为 Null 导致报错的问题。

v3.1.43 - 2024-10-10

修复

  • #7068 修复 Str::trim 不支持 trim/ltrim/rtim 默认规则 \n\r\t\v 的问题。
  • #7109 修复注解 CacheAHead 不能使用默认 ttl 的问题。

优化

  • #7082 优化 Hyperf\Database\Query\Grammars\Grammar::compileUpdate() 的实现代码。
  • #7084 优化 Hyperf\Watcher\Ast\RewriteClassNameVisitor::leaveNode() 的实现代码。
  • #7105 使用 watcher 时,移除 env_vars 来保证子进程的环境变量与主进程一致。

新增

  • #7025 新增方法 Hyperf\Database\Model\Relations\Relation::getMorphAlias()

v3.1.42 - 2024-09-25

修复

  • #7081 修复方法 data_get 不支持非 string 类型 key 值的问题。

新增

  • #7088 优化了所有组件的 Github Actions 的使用方式。

v3.1.41 - 2024-09-19

新增

  • #7059 新增方法 Hyperf\Database\Schema\Schema::getForeignKeys()
  • #7064DoctrineConnection 增加枚举类型支持。
  • #7077 新增方法 ModelUpdateVisitor::getReturnType

v3.1.40 - 2024-09-12

修复

  • #7051 修复使用 migrate 时,--database 选项不生效的问题。

优化

  • #7053Str::is() 中的 $value$pattern 入参强制转化为 string 类型。

v3.1.39 - 2024-09-05

修复

  • #7034 修复使用 phar:build 时,由于入口函数定义了 declare 导致打包后,运行失败的问题。
  • #7043 修复 jsonrpc-http 不支持 swow 的问题。

优化

  • #7033 优化 ConsoleLogger 支持 watcher 组件。
  • #7040 优化 phar:build 脚本的打包速度。

新增

  • #7024Hyperf\Database\Schema\Schema 新增方法 whenTableHasColumnwhenTableDoesntHaveColumn

v3.1.38 - 2024-08-29

新增

  • #7016 新增 QueryBuilder::reorder 方法,用来重置排序规则。
  • #7023 新增 Hyperf\Contract\CanBeEscapedWhenCastToString 并修改了部分静态检测的错误。
  • #7028 新增 Hyperf\Framework\Logger\ConsoleLogger.

v3.1.37 - 2024-08-22

新增

  • #7015Hyperf\Database\Query\Builder 新增方法 whereNoneorWhereNone

优化

  • #6839 使用 匿名类 避免 Migration 类重定义的问题。

v3.1.36 - 2024-08-15

新增

  • #6971Cookie 增加 partitioned 支持。
  • #6990Hyperf\Support\Traits\InteractsWithTime 增加 currentTimestampMs 方法。
  • #6998 为注解 #[AutoController] 新增 defaultMethods 参数,你可以更加方便的设置 Options 方法,便于支持跨域中间件。

v3.1.35 - 2024-08-08

修复

  • #6987 修复使用 Swagger 服务时,使用根路由会导致报错的问题。

v3.1.34 - 2024-08-01

新增

  • #6978#[AsCommand] 注解支持 static 方法调用。
  • #6979 新增命令 queue:dynamic-reload

v3.1.33 - 2024-07-25

优化

  • #6962 优化使用 Command 时,触发异常时的错误日志展示样式。
  • #6963 优化 Model/JsonResource::toJson 的代码逻辑。

修复

  • #6954 修复 MySQL Server 在故障转移和读写主机交换的情况下,MySQL 连接 无法重新连接到服务器的问题。
  • #6961 修复 websocket sender 不支持 Swow 的问题。

v3.1.32 - 2024-07-18

修复

  • #6949 修复因不存在 .env 导致热重启失败的问题。
  • #6953 修复 socketio-serverSwow 引擎下无法正常使用的问题。

优化

  • #6946 删除 watcher 组件中的 Swoole Atomic 依赖。

新增

  • #6950database 组件增加位运算查询支持。

v3.1.31 - 2024-07-11

Added

  • #6936 Support to reload .env when using hyperf/watcher.

v3.1.30 - 2024-07-05

修复

  • #6925 修复 Collection::sortByMany() 在新版本会重置索引导致 BC 的问题,但在 v3.2 版本中,将会把 sortByMany() 返回结果与 sortBy() 一致,即不再会重置索引。

v3.1.29 - 2024-07-04

修复

  • #6925 修复方法 sortByMany 不支持排序规则的问题。

新增

  • #6896hyperf/filesystem 新增 SftpAdapter 适配器。
  • #6917 新增方法 Str::chopStartStr::chopEnd

v3.1.28 - 2024-06-27

修复

  • #6900 修复 LengthAwarePaginator::addQuery() 不支持数组类型入参的问题。
  • #6909 修复 Aop 无法作用于 Trait 的问题。

优化

  • #6903 优化 config-nacos 部分代码。

新增

  • #6885 新增验证器规则 prohibiti
  • #6891hyperf/cache 组件增加配置项 cache.*.options.pool 用于主动选择使用哪个 Redis 实例。
  • #6895 增加收集枚举类中注解的能力。

v3.1.27 - 2024-06-20

新增

  • #6864Hyperf\Database\Schema\Schema 新增方法 getViewshasView
  • #6866 新增方法 Hyperf\Database\Concerns\BuildsQueries::lazy
  • #6869Collection 新增方法 beforeafter
  • #6876 新增方法 Hyperf\Database\Concerns\Builder::eachById.
  • #6878Hyperf\Database\Model\Concerns\QueriesRelationships 新增 whereMorphRelationorWhereMorphRelation
  • #6883Hyperf\Database\Schema\Builder 新增方法 getIndexes hasIndexgetIndexListing
  • #6884 新增方法 Hyperf\Database\Model\Model::updateOrFail.
  • #6897 #6899Hyperf\Kafka\ConsumerManager 新增事件 BeforeLongLangConsumerCreatedAfterConsumerConfigCreated

优化

  • #6829 优化 Command 的错误输出结构。
  • #6868QueryBuilder::orderBy()$column 参数增加类型 Closure|Expression|ModelBuilder|static|string 的支持。
  • #6870 统一 Model Factory 构造函数中的默认路径。
  • #6874 优化 hyperf/watcher 组件,使用 Scanner 代替硬编码。

v3.1.26 - 2024-06-13

修复

  • #6848 修复 LazyCollection::splitIn() 因为类型限制导致报错的问题。

新增

  • #6845 新增方法 Hyperf\Database\Schema::getTables()
  • #6846Hyperf\Database\Concerns\BuildsQueries 新增方法 chunkByIdchunkByIdDesc
  • #6851Hyperf\Database\Model\Concerns 新增方法 orDoesntHaveMorphorHasMorph
  • #6858Hyperf\Database\Model\Concerns\HidesAttributes 新增方法 makeHiddenIfmakeVisibleIf

优化

  • #6855 使用 Conditionable 优化 BuildsQueries 中的 whenunless 方法。
  • #6856 使用 Conditionable 优化 Hyperf\Scout\Builder 中的 whenunless 方法。
  • #6860 使用 Hyperf\Collection\Enumerable 代替 Hyperf\ViewEngine\Contract\Enumerable

v3.1.25.1 - 2024-06-07

新增

  • #6837 新增方法 Model\Concerns\QueriesRelationships::withWhereHas()
  • #6844Hyperf\Database\Model\Concerns\QueriesRelationships 新增方法 whereRelationorWhereRelation

优化

  • #6843 #6847 优化 CollectionLazyCollection 部分方法返回值的类型。

v3.1.25 - 2024-06-06

新增

  • #6809hyperf/database 增加基于 cursor 的分页机制。
  • #6811hyperf/validation 增加验证器规则 list
  • #6814 新增方法 Model::query()->touch() 用于更新 updated_at 数据。
  • #6815 新增方法 Hyperf\Database\Model\Builder::qualifyColumns()
  • #6816 新增方法 Hyperf\Database\Model\Builder::load*
  • #6820 新增方法 Hyperf\Database\Model\Builder::valueOrFail()
  • #6821 新增方法 Hyperf\Database\Concerns\BuildsQueries::chunkMap()
  • #6822Lazy Queries 新增方法 lazyByIdlazyByIdDesc
  • #6825Hyperf\Database\Schmea 新增方法 createDatabasedropDatabaseIfExists

修复

  • #6813 修复 Hyperf\Constants\Annotation\Message 无法使用驼峰 key 的问题。
  • #6818 修复 updateOrInsert 不支持空数据的问题。
  • #6828 修复 AOP 无法作用于 __construct 的问题。
  • #6836 修复 SetCookie::fromString 无法正常使用的问题。

v3.1.24 - 2024-05-30

修复

  • #6796 #6798 修复 Collection::mapInto() 偶发报错的问题。

新增

  • #6792Hyperf\Database\Query\Builder 增加 IncrementEachDecrementEach 方法。
  • #6793tracer 增加 RequestResponse 数据。
  • #6795rate-limit 增加配置 rate_limit.storage.options.expired_time

优化

  • #6778Hyperf\Amqp\Annotation\Consumer::routingKey 增加 array 支持。
  • #6799Hyperf\Stringable\Str 增加 numbersfromBase64 方法。
  • #6803AsCommandClosureCommand 取消返回值,避免与 Command 冲突。

v3.1.23 - 2024-05-23

新增

  • #6757 新增 Hyperf\Collection\LazyCollection
  • #6763 当遇到 Premature end of data 错误时,则认为当前数据库连接不可用,下次从连接池中取出来时,会被重连。
  • #6767Hyperf\Database\Query\Builder 新增 whereAll/orWhereAllwhereAny/orWhereAny 方法。
  • #6774Hyperf\Database\Query\Builder 增加 Lateral Join 方法。
  • #6781Hyperf\Collection\Arr 增加一些新的方法。
  • #6782Hyperf\Database\Query\Builder 新增 whereJsonOverlaps,orWhereJsonOverlapswhereJsonDoesntOverlap 方法。
  • #6783Hyperf\Database\Query\Builder 增加 insertOrIgnoreUsing 方法。
  • #6784Hyperf\Collection\Collection 增加 getOrPutgetOrSet 方法。

优化

  • #6777 优化 StdoutLogger 自定义参数的展示样式。
  • #6778 使用 EnumeratesValues 优化 Collection

v3.1.22 - 2024-05-16

修复

  • #6755 修复 Hyperf\Serializer\ExceptionNormalizer 不支持 symfony 7 的问题。

新增

  • #6734AsCommandClosureCommand 增加更加复杂的可选参数支持。
  • #6746Hyperf\Database\Query\Builder 增加 explain() 方法。
  • #6749hyperf/validation 增加一部分新的规则。
  • #6752Hyperf\Database\Seeders\Seed 增加 pathpaths 方法。

v3.1.21 - 2024-05-09

新增

  • #6738Hyperf\Collection\Collection 增加 unshift 方法。
  • #6740Hyperf\Database\Query\Builder 增加 useIndex forceIndexignoreIndex

优化

  • #6716 #6717 优化 AMQP 消费者启动时,声明交换机的逻辑。
  • #6721 优化了 Collection 中的 when 方法。
  • #6731 优化 Hyperf\Testing\Concerns\InteractsWithModelFactory 代码,避免因为 hyperf/database 没有引入时会报错的问题。

修复

  • #6728 修复 hyperf/watch 组件在 hyperf/constants 开启枚举模式时,会无法正常使用的问题。

v3.1.20 - 2024-04-26

新增

  • #6709RPC 服务增加默认的 onClose 方法可供使用。
  • #6712Hyperf\Collection\Collection 增加新的方法。

优化

  • #6700 优化了 Pluralizer 的代码实现。

v3.1.19 - 2024-04-18

修复

  • #6689 修复 Socket-IO 服务无法正常解析没有 query 但是 data 中携带 ? 的数据。
  • #6697 修复使用 Swow 引擎时,RequestResponsetoString() 方法无法正常使用 withoutBody 参数的问题。

新增

  • #6680Hyperf\Coordinator 增加了一些常用的助手函数。
  • #6681gen:constant 脚本增加 type 选项,可以用于生成 const 或者 enum 两种不同写法的 常量/枚举 类。

优化

  • #6686 优化 FswatchDriver 读到空字符串时,会盲目重启的情况。
  • #6698 升级 hyperf/engine 版本到 v2.11
  • #6696 使用 AMQP 时,消息生产者可以不再必须配置 Producer 注解。

v3.1.18 - 2024-04-12

新增

  • #6674Redis 连接池增加 getConfig() 方法。

修复

  • #6664 修复使用 isset 判断 Hyperf\Collection\Collection 中某个 key 时,无法正确处理 null 的问题。

优化

  • #6668 优化多路复用 RPC 组件的错误捕获器,避免接口文件出错时,无法得到相应错误的问题。

v3.1.17 - 2024-04-10

新增

  • #6652 新增 Str::trim 方法。
  • #6658 当接收到 HEAD 请求时,若不存在当前路由,则尝试从 GET 方法中读取中间件(因为在 fast-route 组件中,存在没有 HEAD 路由会尝试寻找 GET 路由的情况)。
  • #6665 当使用 Websocket 时,记录读取数据的错误日志。

变更

  • #6661 在使用 hyperf/watcher 时,使用 PHP_BINARY 替代 php 作为默认的 2 进制命令。

v3.1.16 - 2024-04-02

新增

  • #6632websocket-client 增加设置 headers 的能力。
  • #6648 使用 WebSocket 组件的 Sender::push()Sender::disconnect 时,增加 bool 类型的返回值。

修复

  • #6633 修复定时任务会偶发跳过某些任务,不执行的问题。
  • #6635 修复 ConsumerMessage::getQueue 的返回类型。

优化

  • #6640hyperf/constants 增加 PHP8 注解的支持。

v3.1.15 - 2024-03-28

新增

  • #6613hyperf/pool 组件在回收链接时,增加 ReleaseConnection 事件。

优化

  • #6616 #6617 使用最新 cs-fixer 版本进行代码格式化。

即将废弃

  • #6621 标记 WebSocketHandeShakeException 为即将废弃, 请使用 WebSocketHandShakeException

v3.1.14 - 2024-03-21

修复

  • #6609 修复当 scan 配置不存在时,会清空整个配置的问题。

Added

  • #6594 新增 hyperf/carbon 组件。

Optimized

  • #6600 优化 AMQP 组件,在进程退出时,不再记录警告日志。
  • #6608 优化 CacheAheadAspect,使其在子协程中同步缓存,不会阻塞当前协程。

v3.1.13 - 2024-03-14

新增

  • #6576 新增 Hyperf\Stringable\Str::apa() 方法。
  • #6577Command 执行前,自动装载符合命名规则的 traits
  • #6579hyperf/support 组件新增 now()today() 方法。
  • #6590MigrateCommand 增加 --graceful 选项。

修复

  • #6593 修复注解 AsCommand 无法正常工作的问题。

v3.1.12 - 2024-03-07

修复

  • #6569 修复使用 http2-client 组件时,当读取超时,channel 被移除后,会导致报错的问题。
  • #6561 修复使用 gen:model 创建模型时,模型关系注释会生成失败的问题。
  • #6566 修复使用 $request->all() 读取所有入参时,数字类型的 key 值会被重置的问题。
  • #6567 修复监听器 CrontabRegisterListener 不会主动检查 crontab.enable 配置。

v3.1.11 - 2024-03-01

修复

  • #6555 修复使用非 string 参数时,数据库组件中 invalidOperator 方法会报错的问题。
  • #6563 修复定时任务睡眠间隔会偶发出现跳秒的问题。

新增

  • #6550hyperf/opentracing 增加 noop 适配器。
  • #6562hyperf/cache 组件增加 SqliteDriver 适配器。

优化

  • #6556 在数据库组件时,允许为模型参数复制表达式。但这不是一个标准用法,尽量不要使用

v3.1.10 - 2024-02-23

新增

  • #6542hyperf/cache 新增内存缓存驱动 MemoryDriver
  • #6533 新增 database-sqlite 组件。

优化

  • #6539retry 方法,增加支持手动设置,每次重试时延时时长的功能。

v3.1.9 - 2024-02-18

修复

  • #6482 修复使用验证器组件时,decimal 规则无法与 size 配合使用的问题。

新增

  • #6518AMQP 的事件消息,统一增加 AmqpMessage 参数。
  • #6526Crontab 增加 Conditionable trait。

优化

  • #6517 修复 async-queue 组件,消息结构无法兼容老版本的问题。
  • #6520 使用 logger 组件时,优化 UdpSocketAspect 的协程处理功能。

v3.1.8 - 2024-02-01

修复

  • #6509 修复 Crontab 组件的 Schedule::call() 方法不支持 array 参数的问题。

优化

  • #6511 优化异步队列消息体结构 Hyperf\AsyncQueue\JobMessage

新增

  • #6504rpc-multiplex 组件增加 HostReaderInterface 支持,允许用户自定义协议 Host

v3.1.7 - 2024-01-26

修复

  • #6491 修复 Swagger 参数验证器无法正常收集 query 参数验证规则的问题。
  • #6500 修复单独使用多路复用客户端时,无法正常解析返回值的问题。(正常使用多路复用组件的不受影响)

新增

  • #6483 [#6487] (https://github.com/hyperf/hyperf/pull/6487) 为 Crontab 的注册,增加了新的方式。
  • #6488Psr\Log\LoggerInterface 接口增加默认的实现类。
  • #6495closure-command 增加执行 Crontab 的支持。
  • #6501 新增 Collection::replace()Collection::replaceRecursive()

优化

  • #6480Crontab 的任务跳过时,优化日志格式。
  • #6489 移出旧版本 phpswoole 的判断。

v3.1.6 - 2024-01-18

新增

  • #6449 新增方法 ReflectionManager::getAllClassesByFinder
  • #6468Crontab 增加环境变量限制。
  • #6471 新增方法 Arr::remove
  • #6474 新增方法 Crontab::setOptions()Crontab::getOptions()

优化

  • #6440 优化代码 Hyperf\SocketIOServer\Parser\Decoder::decode()
  • #6472 优化代码 DispatcherFactory,当读取路由时,使用 require 代替 require_once
  • #6473 执行 gen:swagger-schema 脚本时,自动生成对应的文件夹。
  • #6477Crontab 优化 serverMutextaskMutex 的绑定逻辑。

v3.1.5 - 2024-01-04

修复

  • #6423 修复定时任务的时区无法正常使用的问题。
  • #6436 修复 AMQP 消费者生成脚本无法生成正确文件的问题。

新增

  • #6431 新增监听器 UnsetContextInTaskWorkerListener 可以有效防止使用非协程化的 Task 进程时,数据库链接被复制的问题。

优化

  • #6435 #6437 优化模型生成器,可以根据模型内 use 代码块,为模型字段生成匹配的注释。

v3.1.4 - 2023-12-29

修复

  • #6419 修复使用熔断器时,prepareHandler 有时无法正常解析待执行方法的问题。

新增

  • #6426 新增注解 RewriteReturnType,可以用来修改 gen:model 生成模型后,参数注释的返回值类型。

Optimized

  • #6415 当使用 Base62::decode 反序列化空字符串时,抛出异常 InvalidArgumentException 而不是 TypeError

v3.1.3 - 2023-12-21

修复

  • #6389 修复使用 scout 组件时,在索引设置为 Null 的情况下,无法正常读取 Elasticsearch 服务的版本号的问题。
  • #6406 修复 Hyperf\Scout\Searchable 没有正确引入 config 方法命名空间的问题。

新增

  • #6398hyperf/crontab 组件中的每一个任务,增加设置时区的能力。
  • #6402twig 模板引擎,增加 template_suffix 配置。

v3.1.2 - 2023-12-15

修复

  • #6372 修复使用动态参数时,AOP 无法正常使用的问题。
  • #6374 修复使用 rate_limit.storage 配置时,RateLimitAnnotationAspect::getWeightingAnnotation() 无法正常使用的问题。
  • #6384 修复使用 Elasticsearch v7 以下版本且没有指定索引时,scout 组件无法正常使用的问题。

新增

  • #6357command config devtool diserver 组件增加 symfony 7.x 版本的支持。
  • #6373GRPC 客户端增加 ping 方法。
  • #6379swagger 组件增加自定义 attribute 的能力。
  • #6380swagger 组件增加支持收集 mediaType 类型验证规则的能力。

优化

  • #6376 当没有安装 Swoole 扩展或没有安装 hyperf/polyfill-coroutine 组件的情况下,允许开发者开启 Swoole 短名功能。

v3.1.1 - 2023-12-08

修复

  • #6347 修复 view() 方法会增加多余的 content-type 的问题。
  • #6352 修复使用 grpc 协议的 nacos 配置中心时,无法正常使用的问题。
  • #6350 修复因 GrpcClient::runReceiveCoroutine 会在 recv 前删除 recv channel,导致其无法在后续中被使用的问题。
  • #6361 修复 Hyperf\SocketIOServer\Emitter\Future 无法被实例化的问题。

新增

  • #6342 增加 Coroutine::fork()Coroutine::pid() 方法。
  • #6360swagger 服务增加 content-type
  • #6363 为熔断器的 fallback 参数,增加 callable 类型的支持。

v3.1.0 - 2023-12-01

依赖库升级

我们对主要的几个依赖已经了升级

  • 提高 PHP 最低支持版本为 8.1
  • 提高 Swoole 最低支持版本为 5.0
  • 提高 hyperf/engine 最低版本为 2.0
  • 提高 PHPUnit 最低支持版本为 10.0

Swow 支持

  • #5843reactive-x 增加 Swow 支持。
  • #5844socketio-server 增加 Swow 支持。

新增

  • 增加 Psr7Plus 支持。
  • 增加 pest 支持。
  • 新增 hyperf/helper 组件。
  • 新增 hyperf/polyfill-coroutine 组件。
  • #5815hyperf/db 组件,增加了 pdo 引擎别名 mysql
  • #5849 支持数据库操作时,使用枚举进行更新和插入操作。
  • #5894 #5897 为单元测试组件,增加了 model-factory 支持。
  • #5898 为数据库组件增加 toRawSql() 方法。
  • #5906 为数据库组件增加 getRawQueryLog() 方法。
  • #5915 新增助手函数 data_forget
  • #5914 新增方法 Str::isUrl()
  • #5918 新增方法 Arr::isList()
  • #5925 #5926 为数据库组件的模型,增加自定义为枚举的支持。
  • #5930 #5934 新增 AsCommand 注解和 ClosureCommand
  • #5950hyperf/async-queue 组件新增 Job::setMaxAttempts 方法和 dispatch 方法。
  • #5983 #5985hyperf/cache 的注解增加 skipCacheResults 参数,用于跳过缓存阶段。
  • #5994Crontab 增加生命周期事件。
  • #6039Crontab 增加语义化的规则设置。
  • #6082 新增 hyperf/stdlib 组件。
  • #6085 为数据库组件的 Connection 增加一个错误数量,确保当出现多次错误时,会在下次重新连接。
  • #6106 新增了部分验证器规则。
  • #6124 新增方法 Hyperf\AsyncQueue\Job::fail()
  • #6259Hyperf\Database\Query\Builder\addSelect 增加使用 QueryBuilder 的支持。
  • #6301 为限流器组件,增加自定义设置存储器的能力。

优化

  • Prometheus 组件库从默认依赖改为建议。
  • #5586Nacos 服务注册与发现,增加 GRPC 能力。
  • #5866 在特别场景,使用 StrCache 代替 Str,减少 CPU 开销,优化性能。
  • #5872 使用负载均衡组件时,避免因频繁调用 refresh() 方法,导致会执行多次回调函数的问题。
  • #5879 #5878Command 组件,增加了一些新特性。
  • #5901 优化 RPC 协议,让 id 同时支持 string 和 int 两种类型。
  • #5905Collection::forget 入参,增加更多类型支持。
  • #5917 优化 Str::isUrl() 方法。
  • #5920 将所有存在 __toString() 方法的类,增加 \Stringable 接口。
  • #5945 使用 Apollo 配置中心时,避免因为监听多个命名空间,导致频繁更新配置的问题。
  • #5948 优化 Hyperf\Coroutine\Locker 的实现。
  • #5960amqp 组件的注解,增加 poolName 参数。
  • #5972 使用 Collection::except() 方法时,如果传入的 key 为 null,则默认返回所有数据。
  • #5973 简化 logger 组件 handlers 的定义。
  • #6010 使用数据库组件时,如果配置的自定义转化器不存在,则抛出错误。
  • #6030metric 的独立进程收集模式,增加一种新的收集机制,减少进程间通信次数。
  • #6131Crontab 的实际执行单元为 Null 时,抛出异常。
  • #6172 优化 ProcessManager 使其 running 状态更加清晰。
  • #6184 当时用协程风格时,为 SafeSocket 增加日志配置。
  • #6247 你可以从 BadRequestHttpException 中获取原始数据。
  • #6338swagger 组件新增配置项 processors,用户可以追加自定义的 swagger 处理器。

移除

  • hyperf/utils 中移出无用的代码。
  • 移除 setAccessible 方法调用,因为 PHP8.1 版本开始已经默认。
  • 移除其他废弃的方法。
  • #5813 不再支持 swoole 4.x 版本。
  • #5859 默认移除 Hyperf\Stringable\Str 中的缓存逻辑。
  • #6040 移出 Hyperf\Di\Annotation\AbstractAnnotation 中废弃的代码。
  • #6043 移出废弃的 Hyperf\Coroutine\Traits\Container
  • #6244 移出废弃的组件 swoole-tracker

变更

  • 使用 Redis 组件时,如果设置了错误的 option,则抛出异常。
  • #5847 变更 metric 组件默认的 Redis key 值。
  • #5943 使用 JSON RPC 功能时,若使用 HTTP 协议,不再因为 HTTP 码200 时,移出对应的节点。
  • #5961 对于 Hyperf\Amqp\ResultHyperf\Amqp\Message\Type 使用枚举替代常量。
  • #6022 当使用 Base62::decode 反序列化不正确的数据时,会抛出 InvalidArgumentException 而非 TypeError
  • #6128 当使用多层级目录 hyperf/config 时,可以使用 config('a.c') 读取 autoload/a/c.php 中的数据。

修复

  • #5771 修复 Model::updateOrInsert 返回值不是 boolean 的问题。
  • #6033 修复RequestContextResponseContext 无法读取其他协程的数据的问题。
  • #6056 修复 Hyperf\HttpServer\Request::hasFile() 不支持 Swow 的问题。
  • #6260 修复 LoadBalancerInterface::refresh() 中无法正常使用日志的问题。

即将废弃

  • Hyperf\DB\PgSQL\PgSQLConnection::str_replace_once 设为即将废弃方法, 请使用 Hyperf\DB\PgSQL\PgSQLConnection::strReplaceOnce
  • Hyperf\Database\PgSQL\PostgreSqlSwooleExtConnection::str_replace_once 设为即将废弃方法,请使用 Hyperf\Database\PgSQL\PostgreSqlSwooleExtConnection::strReplaceOnce