v2.0.25 - 2020-12-28
v2.0.25 - 2020-12-28
新增
- #3015 为
socketio-server增加了可以自动清理垃圾的机制。 - #3030 新增了方法
ProceedingJoinPoint::getInstance(),可以允许在使用AOP时,拿到被切入的实例。
优化
- #3011 优化
hyperf/tracer组件,可以在链路追踪中记录异常信息。
v2.0.24 - 2020-12-21
修复
- #2978 修复当没有引用
hyperf/contract时,hyperf/snowflake组件会无法正常使用的问题。 - #2983 修复使用协程风格服务时,常量
SWOOLE_HOOK_FLAGS无法生效的问题。 - #2993 修复方法
Arr::merge()入参$array1为空时,会将关联数组,错误的转化为索引数组的问题。
优化
v2.0.23 - 2020-12-14
新增
- #2872 新增
hyperf/phar组件,用于将Hyperf项目打包成phar。
修复
- #2952 修复
Nacos配置中心,在协程风格服务中无法正常使用的问题。
变更
优化
- #2951 优化
model-cache组件,使其执行完多次事务后,只会删除一次缓存。 - #2953 隐藏命令行因执行
exit导致的异常Swoole\ExitException。 - #2963 当异步风格服务使用
SWOOLE_BASE时,会从默认的事件回调中移除onStart事件。
v2.0.22 - 2020-12-07
新增
修复
- #2913 修复使用
ORM中的with预加载逻辑时,会因循环依赖导致内存泄露的问题。 - #2915 修复
WebSocket工作进程会因onMessageoronClose回调失败,导致进程退出的问题。 - #2927 修复验证器规则
alpha_dash不支持int的问题。
变更
优化
- #2931 判断控制器方法是否存在时,使用实际从容器中得到的对象,而非命名空间。
v2.0.21 - 2020-11-30
新增
- #2857 为
service-governance组件新增Consul的ACL Token支持。 - #2870 为脚本
vendor:publish支持发布配置目录的能力。 - #2875 为
watcher组件新增可选项no-restart,允许动态修改注解缓存,但不重启服务。 - #2883 为
scout组件数据导入脚本,增加可选项--chunk和--column|c,允许用户指定任一字段,进行数据插入,解决偏移量过大导致查询效率慢的问题。 - #2891 为
crontab组件新增可用于发布的配置文件。
修复
变更
- #2851 修改
view组件默认的配置文件,使用view-engine引擎,而非第三方blade引擎。
优化
- #2785 优化
watcher组件,使其异常信息更加人性化。 - #2861 优化
Guzzle Coroutine Handler,当其statusCode小于0时,抛出对应异常。 - #2868 优化
Guzzle的sink配置,使其支持传入resource。
v2.0.20 - 2020-11-23
新增
- #2824 为
Hyperf\Database\Query\Builder增加方法simplePaginate()。
修复
- #2820 修复使用
fanout交换机时,AMQP消费者无法正常工作的问题。 - #2831 修复
AMQP连接会被客户端意外关闭的问题。 - #2848 修复在
defer中使用数据库组件时,会导致数据库连接会同时被其他协程绑定的问题。
变更
- #2824 修改
Hyperf\Database\Query\Builder方法paginate()返回值类型,由PaginatorInterface变更为LengthAwarePaginatorInterface。
优化
- #2766 优化
Tracer组件,在抛出异常的情况下,也可以执行finish方法,记录链路。 - #2805 优化
Nacos进程,可以安全停止。 - #2821 优化工具类
Json和Xml,使其抛出一致的异常。 - #2827 优化
Hyperf\Server\ServerConfig,解决方法__set因返回值不为void,导致不兼容PHP8的问题。 - #2839 优化
Hyperf\Database\Schema\ColumnDefinition的注释。
v2.0.19 - 2020-11-17
新增
修复
- #2783 修复
NSQ消费者无法在协程风格下正常使用的问题。 - #2788 修复非静态方法
__handlePropertyHandler()在代理类中,被静态调用的问题。 - #2790 修复
ETCD配置中心,BootProcessListener监听器无法在协程风格下正常使用的问题。 - #2803 修复当
Request无法实例化时,HTTP响应数据被清除的问题。 - #2807 修复当存在重复的中间件时,中间件的表现会与预期不符的问题。
优化
- #2750 优化
Scout组件,当没有配置搜索引擎index或Elasticsearch版本高于7.0时,使用index而非type作为模型的搜索条件。
v2.0.18 - 2020-11-09
新增
- #2752 为注解
@AutoController@Controller和@Mapping添加options参数,用于设置路由元数据。
修复
- #2768 修复
WebSocket握手失败时导致内存泄露的问题。 - #2777 修复低版本
redis扩展,RedisCluster构造函数$auth不支持null,导致报错的问题。 - #2779 修复因没有设置
translation配置文件导致服务启动失败的问题。
变更
- #2765 变更
Concurrent类中创建协程逻辑,由方法Hyperf\Utils\Coroutine::create()代替原来的Swoole\Coroutine::create()。
优化
- #2347 为
AMQP的ConsumerMessage增加参数$waitTimeout,用于在协程风格服务中,安全停止服务。
v2.0.17 - 2020-11-02
新增
- #2625 新增
Hyperf\Tracer\Aspect\JsonRpcAspect, 可以让Tracer组件支持JsonRPC的链路追踪。 - #2709 #2733 为
Model新增了对应的@mixin注释,提升模型的静态方法提示能力。 - #2726 #2733 为
gen:model脚本增加可选项--with-ide, 可以生成对应的IDE文件。 - #2737 新增 view-engine 组件,可以不需要在
Task进程中渲染页面。
修复
- #2719 修复
Arr::merge会因array1中不包含array2中存在的$key时,导致的报错问题。 - #2723 修复
Paginator::resolveCurrentPath无法正常工作的问题。
优化
- #2746 优化
@Task注解,只会在worker进程中执行时,会投递到task进程执行对应逻辑,其他进程则会降级为同步执行。
变更
- #2728
JsonRPC中,以__为前缀的方法,都不会在注册到RPC服务中,例如__construct, ‘__call’。
v2.0.16 - 2020-10-26
新增
修复
- #2680 修复
CastsValue因为没有设置$isSynchronized默认值,导致的类型错误。 - #2680 修复
CastsValue中$items默认值会被__construct覆盖的问题。 - #2693 修复
hyperf/retry组件,Budget表现不符合期望的问题。 - #2695 修复方法
Container::define()因为容器中的对象已被实例化,而无法重定义的问题。
优化
- #2611 优化
hyperf/watcher组件FindDriver,使其可以在Alpine镜像中使用。 - #2662 优化
Amqp消费者进程,使其可以配合Signal组件安全停止。 - #2690 优化
hyperf/tracer组件,确保其可以正常执行finish和flush方法。
v2.0.15 - 2020-10-19
新增
- #2654 新增方法
Hyperf\Utils\Resource::from,可以方便的将string转化为resource。
修复
- #2634 #2640 修复
snowflake组件中,元数据生成器RedisSecondMetaGenerator会产生相同元数据的问题。 - #2639 修复
json-rpc组件中,异常无法正常被序列化的问题。 - #2643 修复
scout:flush执行失败的问题。
优化
- #2656 优化了
json-rpc组件中,参数解析失败后,也可以返回对应的错误信息。
v2.0.14 - 2020-10-12
新增
- #1172 新增基于
laravel/scout实现的组件hyperf/scout, 可以通过搜索引擎进行模型查询。 - #1868 新增
Redis组件的哨兵模式。 - #1969 新增组件
hyperf/resourceandhyperf/resource-grpc,可以更加方便的将模型转化为 Response。
修复
- #2594 修复
hyperf/crontab组件因为无法正常响应hyperf/signal,导致无法停止的问题。 - #2601 修复命令
gen:model因为getter和setter同时存在时,注释@property会被@property-read覆盖的问题。 - #2607 #2637 修复使用
RetryAnnotationAspect时,会有一定程度内存泄露的问题。 - #2624 修复组件
hyperf/testing因使用了guzzle 7.0和CURL HOOK导致无法正常工作的问题。 - #2632 #2635 修复
hyperf\redis组件集群模式,无法设置密码的问题。
优化
- #2603 允许
hyperf/database组件,whereNull方法接受array作为入参。
v2.0.13 - 2020-09-28
新增
- #2445 当使用异常捕获器
WhoopsExceptionHandler返回JSON格式化的数据时,自动添加异常的Trace信息。 - #2580 新增
grpc-client组件的metadata支持。
修复
- #2559 修复使用
socket-io连接socketio-server时,因为携带query信息,导致事件无法被触发的问题。 - #2565 修复生成代理类时,因为存在匿名类,导致代理类在没有父类的情况下使用了
parent::class而报错的问题。 - #2578 修复当自定义进程抛错后,事件
AfterProcessHandle无法被触发的问题。 - #2582 修复使用
Redis::multi且在defer中使用了其他Redis指令后,导致Redis同时被两个协程使用而报错的问题。 - #2589 修复使用了协程风格服务时,
AMQP消费者无法正常启动的问题。 - #2590 修复使用了协程风格服务时,
Crontab无法正常工作的问题。
优化
v2.0.12 - 2020-09-21
新增
- #2512 为 hyperf/database 组件方法
MySqlGrammar::compileColumnListing新增返回字段column_type。
修复
- #2490 修复 hyperf/grpc-client 组件中,流式客户端无法正常工作的问题。
- #2509 修复 hyperf/database 组件中,使用小驼峰模式后,访问器无法正常工作的问题。
- #2535 修复 hyperf/database 组件中,使用
gen:model后,通过访问器生成的注释@property会被morphTo覆盖的问题。 - #2546 修复 hyperf/db-connection 组件中,使用
left join等复杂查询后,MySQL连接无法正常释放的问题。
优化
- #2490 优化 hyperf/grpc-client 组件中的异常和单元测试。
v2.0.11 - 2020-09-14
新增
- #2455 为 hyperf/socketio-server 组件新增方法
Socket::getRequest用于获取Psr7规范的Request。 - #2459 为 hyperf/async-queue 组件新增监听器
ReloadChannelListener用于自动将超时队列里的消息移动到等待执行队列中。 - #2463 为 hyperf/database 组件新增可选的
ModelRewriteGetterSetterVisitor用于为模型生成对应的Getter和Setter。 - #2475 为 hyperf/retry 组件的
Fallback回调,默认增加throwable参数。
修复
- #2464 修复 hyperf/database 组件中,小驼峰模式模型的
fill方法无法正常使用的问题。 - #2478 修复 hyperf/websocket-server 组件中,
Sender::check无法检测非WebSocket的fd值。 - #2488 修复 hyperf/database 组件中,当
pdo实例化失败后beginTransaction调用失败的问题。
优化
- #2461 优化 hyperf/reactive-x 组件
HTTP路由监听器,可以监听任意端口路由。 - #2465 优化 hyperf/retry 组件
FallbackRetryPolicy中fallback除了可以填写被is_callable识别的代码外,还可以填写形如class@method的格式,框架会从Container中拿到对应的class,然后执行其method方法。
变更
- #2492 调整 hyperf/socketio-server 组件中的事件收集顺序,确保
sid早于自定义onConnect被添加到房间中。
v2.0.10 - 2020-09-07
新增
- #2411 为 hyperf/database 组件新增
Hyperf\Database\Query\Builder::forPageBeforeId方法。 - #2420 #2426 为 hyperf/command 组件新增默认选项
enable-event-dispatcher用于初始化事件触发器。 - #2433 为 hyperf/grpc-server 组件路由新增匿名函数支持。
- #2441 为 hyperf/socketio-server 组件中
SocketIO新增了一些setters。
修复
- #2427 修复事件触发器在使用
Pivot或MorphPivot不生效的问题。 - #2443 修复使用 hyperf/Guzzle 组件的
Coroutine Handler时,无法正确获取和传递traceid和spanid的问题。 - #2449 修复发布 hyperf/config-apollo 组件的配置文件时,配置文件名称错误的问题。
优化
- #2429 优化使用
@Inject并且没有设置@var时的错误信息,方便定位问题,改善编程体验。 - #2438 优化当使用 hyperf/model-cache 组件与数据库事务搭配使用时,在事务中删除或修改模型数据会在事务提交后即时再删除缓存,而不再是在删除或修改模型数据时删除缓存数据。
v2.0.9 - 2020-08-31
新增
- #2331 hyperf/nacos 组件增加授权接口。
- #2331 hyperf/nacos 组件增加
nacos.enable配置,用于控制是否启用Nacos服务。 - #2331 hyperf/nacos 组件增加配置合并类型,默认使用全量覆盖。
- #2377 为 gRPC 客户端 的 request 增加
ts请求头,以兼容 Node.js gRPC server 等。 - #2384 新增助手函数
optional(),以创建Hyperf\Utils\Optional对象或更方便 Optional 的使用。
修改
- #2331 修复 hyperf/nacos 组件,服务或配置不存在时,会抛出异常的问题。
- #2356 #2368 修复
pid_file被用户修改后,命令行server:start启动失败的问题。 - #2358 修复验证器规则
digits不支持int类型的问题。
优化
- #2359 优化自定义进程,在协程风格服务下,可以更加友好的停止。
- #2363 优化 hyperf/di 组件,使其不需要依赖 hyperf/config 组件。
- #2373 优化 hyperf/validation 组件的异常捕获器,使其返回
Response时,自动添加content-type头。
v2.0.8 - 2020-08-24
新增
- #2334 新增更加友好的数组递归合并方法
Arr::merge。 - #2335 新增
Hyperf/Utils/Optional,它可以接受任意参数,并允许访问该对象上的属性或调用其方法,即使给定的对象为null,也不会引发错误。 - #2336 新增
RedisNsqAdapter,它通过NSQ发布消息,使用Redis记录房间信息。
修复
- #2338 修复文件系统使用
S3适配器时,文件是否存在的逻辑与预期不符的 BUG。 - #2340 修复
__FUNCTION__和__METHOD__魔术方法无法在被AOP重写的方法里正常工作的 BUG。
优化
- #2319 优化
ResolverDispatcher,使项目发生循环依赖时,可以提供更加友好的错误提示。
v2.0.7 - 2020-08-17
新增
- #2307 #2312 hyperf/nsq 组件,新增
NSQD的HTTP客户端。
修复
- #2275 修复配置中心,拉取配置进程会出现阻塞的 BUG。
- #2276 修复
Apollo配置中心,当配置没有变更时,会清除所有本地配置项的 BUG。 - #2280 修复
Interface的方法会被AOP重写,导致启动报错的 BUG。 - #2281 当使用
Task组件,且没有启动协程时,Signal组件会导致启动报错的 BUG。 - #2304 修复当使用
SocketIOServer的内存适配器,删除sid时,会导致死循环的 BUG。 - #2309 修复
JsonRpcHttpTransporter无法设置自定义超时时间的 BUG。
v2.0.6 - 2020-08-10
新增
- #2125 新增 hyperf/jet 组件。
Jet是一个统一模型的 RPC 客户端,内置 JSONRPC 协议的适配,该组件可适用于所有的PHP (>= 7.2)环境,包括 PHP-FPM 和 Swoole 或 Hyperf。
修复
v2.0.5 - 2020-08-03
新增
修复
- #2210 修复
WebSocket握手成功后,不会立马触发OnOpen事件的 BUG。 - #2214 修复
WebSocket主动关闭连接时,不会触发OnClose事件的 BUG。 - #2218 修复在
协程 Server下,Sender::disconnect报错的 BUG。 - #2227 修复在
协程 Server下,建立keepalive连接后,上下文数据无法在请求结束后销毁的 BUG。
优化
- #2193 优化
Hyperf\Watcher\Driver\FindDriver,使其扫描有变动的文件更加精确。 - #2232 优化
model-cache的预加载功能,使其支持In和InRaw。
v2.0.4 - 2020-07-27
新增
- #2144 数据库查询事件
Hyperf\Database\Events\QueryExecuted添加$result字段。 - #2158 路由
Hyperf\HttpServer\Router\Handler中,添加$options字段。 - #2162 热更新组件添加
Hyperf\Watcher\Driver\FindDriver。 - #2169
Session组件新增配置session.options.domain,用于替换Request中获取的domain。 - #2174 模型生成器添加
ModelRewriteTimestampsVisitor,用于根据数据库字段created_at和updated_at, 重写模型字段$timestamps。 - #2175 模型生成器添加
ModelRewriteSoftDeletesVisitor,用于根据数据库字段deleted_at, 添加或者移除SoftDeletes。 - #2176 模型生成器添加
ModelRewriteKeyInfoVisitor,用于根据数据库主键,重写模型字段$incrementing$primaryKey和$keyType。
修复
优化
v2.0.3 - 2020-07-20
新增
- #1554 新增
hyperf/nacos组件。 - #2082 监听器
Hyperf\Signal\Handler\WorkerStopHandler添加信号SIGINT监听。 - #2097
hyperf/filesystem新增 TencentCloud COS 支持. - #2122 添加 Trait
\Hyperf\Snowflake\Concern\HasSnowflake为模型自动生成雪花算法的主键。
修复
- #2017 修复 Prometheus 使用 redis 打点时,改变 label 会导致收集报错的 BUG。
- #2117 修复使用
server:watch时,注解@Inject有时会失效的 BUG。 - #2123 修复
tracer会记录两次Redis 指令的 BUG。 - #2139 修复
ValidationMiddleware在WebSocket服务下使用会报错的 BUG。 - #2140 修复请求抛出异常时,
Session无法保存的 BUG。
优化
- #2080 方法
Hyperf\Database\Model\Builder::paginate中参数$perPage的类型从int更改为?int。 - #2110 在使用
hyperf/watcher时,会先检查进程是否存在,如果不存在,才会发送SIGTERM信号。 - #2116 优化组件
hyperf/di的依赖。 - #2121 在使用
gen:model时,如果用户自定义了与数据库字段一致的字段时,则会替换对应的@property。 - #2129 当 Response Json 格式化失败时,会抛出更加友好的错误提示。
v2.0.2 - 2020-07-13
修复
- #1898 修复定时器规则
$min-$max解析有误的 BUG。 - #2037 修复 TCP 服务,连接后共用一个协程,导致 DB 等连接池无法正常回收连接的 BUG。
- #2051 修复
CoroutineServer不会生成hyperf.pid的 BUG。 - #2055 修复
Guzzle在传输大数据包时会自动添加头Expect: 100-Continue,导致请求失败的 BUG。 - #2059 修复
SocketIOServer中Redis重连失败的 BUG。 - #2067 修复
hyperf/watcher组件Syntax错误会导致进程异常。 - #2085 修复注解
RetryFalsy会导致获得正确的结果后,再次重试。 - #2089 修复使用
gen:command后,脚本必须要进行修改,才能被加载到的 BUG。 - #2093 修复脚本
vendor:publish没有返回码导致报错的 BUG。
新增
优化
变更
- #2031 常量组件的错误码只支持
int和string。 - #2065
WebSocket消息发送器Hyperf\WebSocketServer\Sender支持push和disconnect。 - #2100 组件
hyperf/utils更新依赖doctrine/inflector版本到^2.0。
移除
- #2065 移除
Hyperf\WebSocketServer\Sender对方法sendsendto和close的支持,请使用push和disconnect。
v2.0.1 - 2020-07-02
新增
修复
- #1952 修复数据库迁移类存在时,也会生成同类名类,导致类名冲突的 BUG。
- #1960 修复
Hyperf\HttpServer\ResponseEmitter::isMethodsExists()判断错误的 BUG。 - #1961 修复因文件
config/autoload/aspects.php不存在导致服务无法启动的 BUG。 - #1964 修复接口请求时,数据体为空会导致
500错误的 BUG。 - #1965 修复
initRequestAndResponse失败后,会导致请求状态码与实际不符的 BUG。 - #1968 修复当修改
aspects.php文件后,Aspect无法安装修改后的结果运行的 BUG。 - #1985 修复注解全局配置不全为小写时,会导致
global_imports失败的 BUG。 - #1990 修复当父类存在与子类一样的成员变量时,
@Inject无法正常使用的 BUG。 - #2019 修复脚本
gen:model因为使用了morphTo或where导致生成对应的@property失败的 BUG。 - #2026 修复当使用了魔术方法时,LazyLoad 代理生成有误的 BUG。
变更
- #1986 当没有设置正确的
swoole.use_shortname变更脚本exit_code为SIGTERM。
优化
v2.0 - 2020-06-22
主要功能
- 重构 hyperf/di 组件,特别是对 AOP 和注解的优化,在 2.0 版本,该组件使用了一个全新的加载机制来提供 AOP 功能的支持。
- 对比 1.x 版本来说最显著的一个功能就是现在你可以通过 AOP 功能切入任何方式实例化的一个类了,比如说,在 1.x 版本,你只能切入由 DI 容器创建的类,你无法切入一个由
new关键词实例化的类,但在 2.0 版本都可以生效了。不过仍有一些例外的情况,您仍无法切入那些在启动阶段用来提供 AOP 功能的类; - 在 1.x 版本,AOP 只能作用于普通的类,无法支持
Final类,但在 2.0 版本您可以这么做了; - 在 1.x 版本,您无法在当前类的构造函数中使用
@Inject或@Value注解标记的类成员属性的值,但在 2.0 版本里,您可以这么做了; - 在 1.x 版本,只有通过 DI 容器创建的对象才能使
@Inject和@Value注解的功能生效,通过new关键词创建的对象无法生效,但在 2.0 版本,都可以生效了; - 在 1.x 版本,在使用注解时,您必须定义注解的命名空间来指定使用的注解类,但在 2.0 版本下,您可以为任一注解提供一个别名,这样在使用这个注解时可以直接使用别名而无需引入注解类的命名空间。比如您可以直接在任意类属性上标记
@Inject注解而无需编写use Hyperf\Di\Annotation\Inject;; - 在 1.x 版本,创建的代理类是一个目标类的子类,这样的实现机制会导致一些魔术常量获得的值返回的是代理类子类的信息,而不是目标类的信息,但在 2.0 版本,代理类会与目标类保持一样的类名和代码结构;
- 在 1.x 版本,当代理类缓存存在时则不会重新生成缓存,就算源代码发生了变化,这样的机制有助于扫描耗时的提升,但与此同时,这也会导致开发阶段的一些不便利,但在 2.0 版本,代理类缓存会根据源代码的变化而自动变化,这一改变会减少很多在开发阶段的心智负担;
- 为 Aspect 类增加了
priority优先级属性,现在您可以组织多个 Aspect 之间的顺序了; - 在 1.x 版本,您只能通过
@Aspect注解类定义一个 Aspect 类,但在 2.0 版本,您还可以通过配置文件、ConfigProvider 来定义 Aspect 类; - 在 1.x 版本,您在使用到依赖懒加载功能时,必须注册一个
Hyperf\Di\Listener\LazyLoaderBootApplicationListener监听器,但在 2.0 版本,您可以直接使用该功能而无需做任何的注册动作; - 增加了
annotations.scan.class_map配置项,通过该配置您可以将任意类替换成您自己的类,而使用时无需做任何的改变;
- 对比 1.x 版本来说最显著的一个功能就是现在你可以通过 AOP 功能切入任何方式实例化的一个类了,比如说,在 1.x 版本,你只能切入由 DI 容器创建的类,你无法切入一个由
依赖库更新
- 将
ext-swoole升级到了>=4.5; - 将
psr/event-dispatcher升级到了^1.0; - 将
monolog/monolog升级到了^2.0; - 将
phpstan/phpstan升级到了^0.12.18; - 将
vlucas/phpdotenv升级到了^4.0; - 将
symfony/finder升级到了^5.0; - 将
symfony/event-dispatcher升级到了^5.0; - 将
symfony/console升级到了^5.0; - 将
symfony/property-access升级到了^5.0; - 将
symfony/serializer升级到了^5.0; - 将
elasticsearch/elasticsearch升级到了^7.0;
类和方法的变更
- 移除了
Hyperf\Di\Aop\AstCollector; - 移除了
Hyperf\Di\Aop\ProxyClassNameVisitor; - 移除了
Hyperf\Di\Listener\LazyLoaderBootApplicationListener; - 移除了
Hyperf\Dispatcher\AbstractDispatcher类的dispatch(...$params)方法; - 移除了 hyperf/utils 组件中 ConfigProvider 中的
Hyperf\Contract\NormalizerInterface => Hyperf\Utils\Serializer\SymfonyNormalizer关系; - 移除了
Hyperf\Contract\OnOpenInterface、Hyperf\Contract\OnCloseInterface、Hyperf\Contract\OnMessageInterface、Hyperf\Contract\OnReceiveInterface接口中的$server参数的强类型声明;
新增
- #992 新增 hyperf/reactive-x 组件;
- #1245 为
ExceptionHandler新增了注解的定义方式; - #1245
ExceptionHandler新增了priority优先级属性,通过配置文件或注解方式均可定义优先级; - #1819 新增 hyperf/signal 组件;
- #1844 为 hyperf/model-cache 组件中的
ttl属性增加了\DateInterval类型的支持; - #1855 连接池新增了
ConstantFrequency恒定频率策略来释放限制的连接; - #1871 为 Guzzle 增加
sink选项支持; - #1805 新增 Coroutine Server 协程服务支持;
- 变更了
Hyperf\Contract\ProcessInterface中的bind(Server $server)方法声明为bind($server); - 变更了
Hyperf\Contract\ProcessInterface中的isEnable()方法声明为isEnable($server); - 配置中心、Crontab、服务监控、消息队列消费者现在可以通过协程模式来运行,且在使用协程服务模式时,也必须以协程模式来运行;
Hyperf\AsyncQueue\Environment的作用域改为当前协程内,而不是整个进程;- 协程模式下不再支持 Task 机制;
- 变更了
- #1877 在 PHP 8 下使用
@Inject注解时支持通过成员属性强类型声明来替代@var声明,如下所示:
class Example {
/**
* @Inject
*/
private ExampleService $exampleService;
}- #1890 新增
Hyperf\HttpServer\ResponseEmitter类来响应任意符合 PSR-7 标准的 Response 对象,同时抽象了Hyperf\Contract\ResponseEmitterInterface契约; - #1890 为
Hyperf\HttpMessage\Server\Response类新增了getTrailers()和getTrailer(string $key)和withTrailer(string $key, $value)方法; - #1920 新增方法
Hyperf\WebSocketServer\Sender::close(int $fd, bool $reset = null).
修复
- #1825 修复了
StartServer::execute的TypeError; - #1854 修复了在 filesystem 中使用
Runtime::enableCoroutine()时,is_resource不能工作的问题; - #1900 修复了
Model中的asDecimal方法类型有可能错误的问题; - #1917 修复了
Request::isXmlHttpRequest方法无法正常工作的问题;
变更
- #705 统一了 HTTP 异常的处理方式,现在统一抛出一个
Hyperf\HttpMessage\Exception\HttpException依赖类来替代在Dispatcher中直接响应的方式,同时提供了Hyperf\HttpServer\Exception\Handler\HttpExceptionHandler异常处理器来处理该类异常; - #1846 当您 require 了
symfony/serializer库,不再自动映射Hyperf\Contract\NormalizerInterface的实现类,您需要手动添加该映射关系,如下:
use Hyperf\Utils\Serializer\SerializerFactory;
use Hyperf\Utils\Serializer\Serializer;
return [
Hyperf\Contract\NormalizerInterface::class => new SerializerFactory(Serializer::class),
];- #1924 重命名
Hyperf\GrpcClient\BaseClient内simpleRequest, getGrpcClient, clientStreamRequest方法名为_simpleRequest, _getGrpcClient, _clientStreamRequest;
移除
- #1890 Removed
Hyperf\Contract\Sendableinterface and all implementations of it. - #1905 Removed config
config/server.php, you can merge it intoconfig/config.php.