mirror of
https://gitee.com/hyperf/hyperf.git
synced 2024-12-04 12:47:55 +08:00
88cf34b2e8
Co-authored-by: 李铭昕 <715557344@qq.com>
43 KiB
43 KiB
版本更新記錄
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
工作進程會因onMessage
oronClose
回調失敗,導致進程退出的問題。 - #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/resource
andhyperf/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
對方法send
sendto
和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\Sendable
interface and all implementations of it. - #1905 Removed config
config/server.php
, you can merge it intoconfig/config.php
.