mirror of
https://gitee.com/hyperf/hyperf.git
synced 2024-11-30 18:57:51 +08:00
153 KiB
153 KiB
版本更新記錄
v2.2.31 - 2022-04-18
修復
新增
v2.2.30 - 2022-04-04
修復
- #4648 當使用
retry
組件中的熔斷器時,修復在open
狀態下,無法自動調用fallback
方法的問題。 - #4657 修復使用
session
中的文件適配器時,相同的Session ID
在被重寫後,最後修改時間仍是上次修改時間的問題。
新增
- #4646 為
Redis
哨兵模式增加設置密碼的功能。
v2.2.29 - 2022-03-28
修復
- #4620 修復
Hyperf\Memory\LockManager::initialize()
方法中,$filename
默認值錯誤的問題。
v2.2.28 - 2022-03-14
修復
新增
- #4580 新增方法
Hyperf\Utils\Coroutine\Concurrent::getChannel()
。
優化
- #4602 將方法
Hyperf\ModelCache\Manager::formatModels()
更改為公共方法。
v2.2.27 - 2022-03-07
優化
- #4572 當負載均衡器
hyperf/load-balancer
選擇節點失敗時,使用Hyperf\LoadBalancer\Exception\RuntimeException
代替\RuntimeException
。
v2.2.26 - 2022-02-21
修復
- #4536 修復使用
JsonRPC
時,會設置多次content-type
的問題。
新增
- #4527 為
Hyperf\Database\Schema\Blueprint
增加了一些比較有用的方法。
優化
- #4514 通過使用小寫
key
獲取HTTP
的Header
信息,提升一部分性能。 - #4521 在使用 Redis 的哨兵模式時,如果第一個哨兵節點連接失敗,則嘗試連接其餘哨兵節點。
- #4529 將組件
hyperf/context
從組件hyperf/utils
中分離出來。
v2.2.25 - 2022-01-30
修復
- #4484 修復使用
Nacos v2.0.4
版本時,服務是否註冊過,判斷有誤的問題。
新增
- #4477 為
Hyperf\HttpServer\Request
新增Macroable
支持。
優化
- #4254 當使用
Hyperf\Di\ScanHandlerPcntlScanHandler
時,增加grpc.enable_fork_support
檢測。
v2.2.24 - 2022-01-24
修復
- #4474 修復使用多路複用 RPC 時,導致測試腳本無法正常停止的問題。
優化
- #4451 優化了
Hyperf\Watcher\Driver\FindNewerDriver
的代碼。
v2.2.23 - 2022-01-17
修復
- #4426 修復
view-engine
模板引擎,在併發請求下導致模板緩存生成錯誤的問題。
新增
- #4449 為
Hyperf\Utils\Collection
增加多條件排序的能力。 - #4455 新增命令
gen:view-engine-cache
可以預生成模板緩存,避免併發帶來的一系列問題。 - #4453 新增
Hyperf\Tracer\Aspect\ElasticserachAspect
,用來記錄elasticsearch
客户端的調用記錄。 - #4458 新增
Hyperf\Di\ScanHandler\ProcScanHandler
,用來支持Windows
+Swow
環境下啟動服務。
v2.2.22 - 2022-01-04
修復
- #4399 修復使用
RedisCluster
時,無法使用scan
方法的問題。
新增
- #4409 為
session
增加數據庫支持。 - #4411 為
tracer
組件,新增Hyperf\Tracer\Aspect\DbAspect
,用於記錄hyperf/db
組件產生的SQL
日誌。 - #4420 為
Hyperf\Amqp\IO\SwooleIO
增加SSL
支持。
優化
- #4406 刪除
Swoole PSR-0
風格代碼,更加友好的支持Swoole 5.0
版本。 - #4429 為
Debug::getRefCount()
方法增加類型檢測,只能用於輸出對象的RefCount
。
v2.2.21 - 2021-12-20
修復
- #4347 修復使用
AMQP
組件時,如果連接緩衝區溢出,會導致連接被綁定到多個協程從而報錯的問題。 - #4373 修復使用
Snowflake
組件時,由於getWorkerId()
中存在IO
操作進而導致協程切換,最終導致元數據生成重複的問題。
新增
- #4344 新增事件
Hyperf\Crontab\Event\FailToExecute
,此事件會在Crontab
任務執行失敗時觸發。 - #4348 支持使用
gen:*
命令創建文件時,自動吊起對應的IDE
,並打開當前文件。
優化
- #4350 優化了未開啟
swoole.use_shortname
時的錯誤信息。 - #4360 將
Hyperf\Amqp\IO\SwooleIO
進行重構,使用更加穩定和高效的Swoole\Coroutine\Socket
而非Swoole\Coroutine\Client
。
v2.2.20 - 2021-12-13
修復
新增
v2.2.19 - 2021-12-06
修復
- #4308 修復執行
server:watch
時,因為使用相對路徑導致collector-reload
文件找不到的問題。
優化
- #4317 為
Hyperf\Utils\Collection
和Hyperf\Database\Model\Collection
增強類型提示功能。
v2.2.18 - 2021-11-29
修復
- #4283 修復當
GRPC
結果為null
時,Hyperf\Grpc\Parser::deserializeMessage()
報錯的問題。
新增
- #4284 新增方法
Hyperf\Utils\Network::ip()
獲取本地IP
。 - #4290 為
HTTP
服務增加chunk
功能。 - #4291 為
value()
方法增加動態參數功能。 - #4293 為
server:watch
命令增加相對路徑支持。 - #4295 為
Hyperf\Database\Schema\Blueprint::bigIncrements()
增加別名id()
。
v2.2.17 - 2021-11-22
修復
- #4243 修復使用
parallel
時,結果集的順序與入參不一致的問題。
新增
v2.2.16 - 2021-11-15
新增
- #4252 為
Hyperf\RpcClient\AbstractServiceClient
新增getServiceName()
方法。
優化
- #4253 在掃描階段時,如果類庫找不到,則跳過且報出警告。
v2.2.15 - 2021-11-08
修復
- #4200 修復當
runtime/caches
不是目錄時,使用文件緩存失敗的問題。
新增
- #4157 為
Hyperf\Utils\Arr
增加Macroable
支持。
v2.2.14 - 2021-11-01
新增
修復
v2.2.13 - 2021-10-25
新增
- #4159 為
Macroable::mixin
方法增加參數$replace
,當其設置為false
時,會優先判斷是否已經存在。
修復
- #4158 修復因為使用了
Union
類型,導致生成代理類失敗的問題。
優化
v2.2.12 - 2021-10-18
新增
- #4129 新增方法
Str::stripTags()
和Stringable::stripTags()
。
修復
v2.2.11 - 2021-10-11
修復
- #4101 修復 Nacos 使用的密碼攜帶特殊字符時,密碼會被
urlencode
導致密碼錯誤的問題。
優化
v2.2.10 - 2021-09-26
修復
v2.2.9 - 2021-09-22
修復
- #4061 修復
hyperf/metric
組件與最新版本的prometheus_client_php
存在衝突的問題。 - #4068 修復命令行拋出錯誤時,退出碼與實際不符的問題。
- #4076 修復
HTTP
服務因返回數據不是標準HTTP
協議時,導致服務宕機的問題。
新增
- #4014 #4080 為
kafka
組件增加sasl
和ssl
的支持。 - #4045 #4082 為
tracer
組件新增配置opentracing.enable.exception
,用來判斷是否收集異常信息。 - #4086 支持收集接口
Interface
的註解信息。
優化
- #4084 優化了註解找不到時的錯誤信息。
v2.2.8 - 2021-09-14
修復
- #4028 修復
grafana
面板中,請求數結果計算錯誤的問題。 - #4030 修復異步隊列會因為解壓縮模型失敗,導致進程中斷隨後重啟的問題。
- #4042 修復因
SocketIO
服務關閉時清理過期的fd
,進而導致協程死鎖的問題。
新增
- #4013 為
Cookies
增加sameSite=None
的支持。 - #4017 為
Hyperf\Utils\Collection
增加Macroable
。 - #4021 為
retry()
方法中$callback
匿名函數增加$attempts
變量。 - #4040 為
AMQP
組件新增方法ConsumerDelayedMessageTrait::getDeadLetterExchange()
,可以用來重寫x-dead-letter-exchange
參數。
移除
- #4017 從
Hyperf\Database\Model\Collection
中移除Macroable
,因為它的基類Hyperf\Utils\Collection
已引入了對應的Macroable
。
v2.2.7 - 2021-09-06
修復
優化
- #4009 優化方法
MethodDefinitionCollector::getOrParse()
,避免在 PHP8 環境下,觸發即將廢棄的錯誤。
新增
v2.2.6 - 2021-08-30
修復
- #3969 修復 PHP8 環境下使用
Hyperf\Validation\Rules\Unique::__toString()
導致類型錯誤的問題。 - #3979 修復熔斷器組件,
timeout
變量無法使用的問題。 - #3986 修復文件系統組件,開啟
SWOOLE_HOOK_NATIVE_CURL
後導致 OSS hook 失敗的問題。
新增
v2.2.5 - 2021-08-23
修復
新增
- code-generator 新增組件
code-generator
,可以用來將Doctrine
註解轉化為PHP8
的原生註解。
優化
- #3957 使用命令
gen:model
生成getAttribute
註釋時,支持基於@return
註釋返回對應的類型。
v2.2.4 - 2021-08-16
修復
新增
- #3924 為
Consul
服務註冊中心增加配置項services.drivers.consul.check
。 - #3932 為
AMQP
消費者增加重新入隊列的配置,允許用户返回NACK
後,消息重入隊列。 - #3941 允許多路複用的
RPC
組件使用註冊中心的能力。 - #3947 新增方法
Str::mask
,允許用户對一段文本某段內容打馬賽克。
優化
- #3944 封裝了讀取
Aspect
元數據的方法。
v2.2.3 - 2021-08-09
修復
- #3897 修復因為
lightBeatEnabled
導致心跳失敗,進而導致Nacos
服務註冊多次的問題。 - #3905 修復
AMQP
連接在關閉時導致空指針的問題。 - #3906 修復
AMQP
連接關閉時,因已經銷燬所有等待通道而導致失敗的問題。 - #3908 修復使用了以
CoordinatorManager
為基礎的循環邏輯時,自定義進程無法正常重啟的問題。
v2.2.2 - 2021-08-03
修復
- #3872 #3873 修復使用
Nacos
服務時,因為沒有使用默認的組名,導致心跳失敗的問題。 - #3877 修復
Nacos
服務,心跳會被註冊多次的問題。 - #3879 修復熱更新因為代理類被覆蓋,導致無法正常使用的問題。
優化
- #3877 為
Nacos
服務,增加lightBeatEnabled
支持。
v2.2.1 - 2021-07-27
修復
- #3750 修復使用
SocketIO
時,由於觸發了一個不存在的命名空間,而導致致命錯誤的問題。 - #3828 修復在
PHP 8.0
版本中,無法對Hyperf\Redis\Redis
使用懶加載注入的問題。 - #3845 修復
watcher
組件無法在v2.2
版本中正常使用的問題。 - #3848 修復
Nacos
組件無法像v2.1
版本註冊自身到Nacos
服務中的問題。 - #3866 修復
Nacos
實例無法正常註冊元數據的問題。
優化
- #3763 使
JsonResource::wrap()
和JsonResource::withoutWrapping()
支持鏈式調用。 - #3843 在
Nacos
註冊服務時,根據HTTP
響應的返回碼和數據協同判斷,以確保是否已註冊過。 - #3854 為文件下載方法支持
RFC 5987
,它允許使用UTF-8
格式和URL
格式化。
v2.1.23 - 2021-07-12
優化
- #3787 優化
JSON RPC
服務,優先初始化PSR Response
,用於避免PSR Request
初始化失敗後,無法從上下文中獲取Response
的問題。
v2.1.22 - 2021-06-28
安全性更新
修復
- #3721 修復了驗證器規則
in
和not in
判斷有誤的問題,例如規則為in:00
時,0
不應該被允許通過。
v2.1.21 - 2021-06-21
修復
- #3684 修復使用熔斷器時,成功次數和失敗次數的界限判斷有誤的問題。
v2.1.20 - 2021-06-07
修復
- #3667 修復形如
10-12/1,14-15/1
的定時任務規則無法正常使用的問題。 - #3669 修復了沒有反斜線形如
10-12
的定時任務規則無法正常使用的問題。 - #3674 修復
@Task
註解中,參數$workerId
無法正常使用的問題。
優化
- #3663 優化
AbstractServiceClient::getNodesFromConsul()
方法,排除了可能找不到端口的隱患。 - #3668 優化
Guzzle
組件中CoroutineHandler
代理相關的代碼,增強其兼容性。
v2.1.19 - 2021-05-31
修復
- #3618 修復使用了相同路徑但不同實現邏輯的路由會在命令
describe:routes
中,被合併成一條的問題。 - #3625 修復
Hyperf\Di\Annotation\Scanner
中無法正常使用class_map
功能的問題。
新增
- #3626 為
RPC
組件增加了新的路徑打包器Hyperf\Rpc\PathGenerator\DotPathGenerator
。
新組件孵化
- nacos-sdk 基於 Nacos Open API 實現的 SDK。
v2.1.18 - 2021-05-24
修復
- #3598 修復事務回滾時,模型累加、累減操作會導致模型緩存產生髒數據的問題。
- #3607 修復在使用協程風格的
WebSocket
服務時,onOpen
事件無法在事件結束後銷燬協程的問題。 - #3610 修復數據庫存在前綴時,
fromSub()
和joinSub()
無法正常使用的問題。
v2.1.17 - 2021-05-17
修復
- #3856 修復
Swow
服務處理keepalive
的請求時,協程無法在每個請求後結束的問題。
新增
- #3329
@Crontab
註解的enable
參數增加支持設置數組, 你可以通過它動態的控制定時任務是否啟動。
v2.1.16 - 2021-04-26
修復
- #3510 修復
consul
無法將節點強制離線的問題。 - #3513 修復
Nats
因為Socket
超時時間小於最大閒置時間,導致連接意外關閉的問題。 - #3520 修復
@Inject
無法作用於嵌套Trait
的問題。
新增
- #3514 新增方法
Hyperf\HttpServer\Request::clearStoredParsedData()
。
優化
- #3517 優化
Hyperf\Di\Aop\PropertyHandlerTrait
。
v2.1.15 - 2021-04-19
新增
- #3484 新增
ORM
方法withMax()
withMin()
withSum()
和withAvg()
.
v2.1.14 - 2021-04-12
修復
新增
- #3472 新增方法
Sender::getResponse()
,可以在協程風格的WebSocket
服務裏,獲得與fd
一一對應的Response
對象。
v2.1.13 - 2021-04-06
修復
- #3432 修復
SocketIO
服務,定時清理失效fd
的功能無法作用到其他worker
進程的問題。 - #3434 修復
RPC
結果不支持允許為null
的類型,例如?array
會被強制轉化為數組。 - #3447 修復模型緩存中,因為存在表前綴,導致模型默認值無法生效的問題。
- #3450 修復註解
@Crontab
無法作用於方法
的問題,支持一個類中,配置多個@Crontab
。
優化
- #3453 優化了類
Hyperf\Utils\Channel\Caller
回收實例時的機制,防止因為實例為null
時,導致無法正確回收的問題。 - #3455 優化腳本
phar:build
,支持使用軟連接方式加載的組件包。
v2.1.12 - 2021-03-29
修復
優化
- #3422 優化了
co-phpunit
的代碼。
v2.1.11 - 2021-03-22
新增
- #3376 為註解
Hyperf\DbConnection\Annotation\Transactional
增加參數$connection
和$attempts
,用户可以按需設置事務連接和重試次數。 - #3403 新增方法
Hyperf\Testing\Client::sendRequest()
,用户可以使用自己構造的ServerRequest
,比如設置Cookies
。
修復
- #3380 修復超全局變量,在協程上下文裏沒有
Request
對象時,無法正常工作的問題。 - #3394 修復使用
@Inject
注入的對象,會被trait
中注入的對象覆蓋的問題。 - #3395 修復當繼承使用
@Inject
注入私有變量的父類時,而導致子類實例化報錯的問題。 - #3398 修復單元測試中使用
UploadedFile::isValid()
時,無法正確判斷結果的問題。
v2.1.10 - 2021-03-15
修復
- #3348 修復當使用
Arr::forget
方法在key
為integer
且不存在時,執行報錯的問題。 - #3351 修復
hyperf/validation
組件中,FormRequest
無法從協程上下文中獲取到修改後的ServerRequest
,從而導致驗證器驗證失敗的問題。 - #3356 修復
hyperf/testing
組件中,客户端Hyperf\Testing\Client
無法模擬構造正常的UriInterface
的問題。 - #3363 修復在入口文件
bin/hyperf.php
中自定義的常量,無法在命令server:watch
中使用的問題。 - #3365 修復當使用協程風格服務時,如果用户沒有配置
pid_file
,仍然會意外生成runtime/hyperf.pid
文件的問題。
優化
- #3364 優化命令
phar:build
,你可以在不使用php
腳本的情況下執行phar
文件,就像使用命令./composer.phar
而非php composer.phar
。 - #3367 優化使用
gen:model
生成模型字段的類型註釋時,儘量讀取自定義轉換器轉換後的對象類型。
v2.1.9 - 2021-03-08
修復
新增
- #3325 為
Crontab
註解增加enable
參數,用於控制當前任務是否註冊到定時任務中。
優化
- #3338 優化了
testing
組件,使模擬請求的方法運行在獨立的協程當中,避免協程變量污染。
v2.1.8 - 2021-03-01
修復
- #3301 修復
hyperf/cache
組件,當沒有在註解中設置超時時間時,會將超時時間強制轉化為 0,導致緩存不失效的問題。
新增
- #3310 新增方法
Blueprint::comment()
,可以允許在使用Migration
的時候,設置表註釋。 - #3311 新增方法
RouteCollector::getRouteParser
,可以方便的從RouteCollector
中獲取到RouteParser
對象。 - #3316 允許用户在
hyperf/db
組件中,註冊自定義數據庫適配器。
優化
新組件孵化
- rpc-multiplex 基於 Channel 實現的多路複用 RPC 組件。
- db-pgsql 適配於
hyperf/db
的PgSQL
適配器。
v2.1.7 - 2021-02-22
修復
- #3272 修復使用
doctrine/dbal
修改數據庫字段名報錯的問題。
新增
- #3261 新增方法
Pipeline::handleCarry
,可以方便處理返回值。 - #3267 新增
Hyperf\Utils\Reflection\ClassInvoker
,用於執行非公共方法和讀取非公共變量。 - #3268 為
kafka
消費者新增訂閲多個主題的能力。 - #3193 #3296 為
phar:build
新增選項-M
,可以用來映射外部的文件或目錄到Phar
包中。
變更
v2.1.6 - 2021-02-08
修復
- #3233 修復
AMQP
組件,因連接服務端失敗,導致連接池耗盡的問題。 - #3245 修復
hyperf/kafka
組件設置autoCommit
為false
無效的問題。 - #3255 修復
Nsq
消費者進程,無法觸發defer
方法的問題。
優化
- #3249 優化
hyperf/kafka
組件,可以重用連接進行消息發佈。
移除
- #3235 移除
hyperf/kafka
組件rebalance
檢查,因為底層庫longlang/phpkafka
增加了對應的檢查。
v2.1.5 - 2021-02-01
修復
- #3204 修復在
hyperf/rpc-server
組件中,中間件會被意外替換的問題。 - #3209 修復
hyperf/amqp
組件在使用協程風格服務,且因超時意外報錯時,沒有辦法正常回收到連接池的問題。 - #3222 修復
hyperf/database
組件中JOIN
查詢會導致內存泄露的問題。 - #3228 修復
hyperf/tracer
組件中,在defer
中調用flush
失敗時,會導致進程異常退出的問題。 - #3230 修復
hyperf/scout
組件中orderBy
方法無效的問題。
新增
- #3211 為
hyperf/nacos
組件添加了新的配置項url
,用於訪問Nacos
服務。 - #3214 新增類
Hyperf\Utils\Channel\Caller
,可以允許用户使用協程安全的連接,避免連接被多個協程綁定,導致報錯的問題。 - #3224 新增方法
Hyperf\Utils\CodeGen\Package::getPrettyVersion()
,允許用户獲取組件的版本。
變更
- #3218 默認為
AMQP
配置QOS
參數,prefetch_count
為1
,global
為false
,prefetch_size
為0
。 - #3224 為組件
jean85/pretty-package-versions
升級版本到^1.2|^2.0
, 支持Composer 2.x
。
如果使用 composer 2.x,則需要安裝 jean85/pretty-package-versions 的 ^2.0 版本,反之安裝 ^1.2 版本
優化
- #3226 優化
hyperf/database
組件,使用group by
或having
時執行子查詢獲得總數。
v2.1.4 - 2021-01-25
修復
- #3165 修復方法
Hyperf\Database\Schema\MySqlBuilder::getColumnListing
在MySQL 8.0
版本中無法正常使用的問題。 - #3174 修復
hyperf/database
組件中where
語句因為不嚴謹的代碼編寫,導致被綁定參數會被惡意替換的問題。 - #3179 修復
json-rpc
客户端因對端服務重啟,導致接收數據一直異常的問題。 - #3189 修復
kafka
在集羣模式下無法正常使用的問題。 - #3191 修復
json-rpc
客户端因對端服務重啟,導致連接池中的連接全部失效,新的請求進來時,首次使用皆會報錯的問題。
新增
- #3170 為
hyperf/watcher
組件新增了更加友好的驅動器FindNewerDriver
,支持Mac
Linux
和Docker
。 - #3195 為
JsonRpcPoolTransporter
新增了重試機制, 當連接、發包、收包失敗時,默認重試 2 次,收包超時不進行重試。
優化
- #3169 優化了
ErrorExceptionHandler
中與set_error_handler
相關的入參代碼, 解決靜態檢測因入參不匹配導致報錯的問題。 - #3191 優化了
hyperf/json-rpc
組件, 當連接中斷後,會先嚐試重連。
變更
- #3174 嚴格檢查
hyperf/database
組件中where
語句綁定參數。
新組件孵化
v2.1.3 - 2021-01-18
修復
- #3070 修復
tracer
組件無法正常使用的問題。 - #3106 修復協程從已被銷燬的協程中複製協程上下文時導致報錯的問題。
- #3108 修復使用
describe:routes
命令時,相同callback
不同路由組的路由會被替換覆蓋的問題。 - #3118 修復
migrations
配置名位置錯誤的問題。 - #3126 修復
Swoole
擴展v4.6
版本中,SWOOLE_HOOK_SOCKETS
與jaeger
衝突的問題。 - #3137 修復
database
組件,當沒有主動設置PDO::ATTR_PERSISTENT
為true
時,導致的類型錯誤。 - #3141 修復使用
Migration
時,doctrine/dbal
無法正常工作的問題。
新增
v2.1.2 - 2021-01-11
修復
- #3050 修復在
increment()
後使用save()
時,導致extra
數據被保存兩次的問題。 - #3082 修復
hyperf/db
組件在defer
中使用時,會導致連接被其他協程綁定的問題。 - #3084 修復
phar
打包後getRealPath
無法正常工作的問題。 - #3087 修復使用
AOP
時,pipeline
導致內存泄露的問題。 - #3095 修復
hyperf/scout
組件中,ElasticsearchEngine::getTotalCount()
無法兼容Elasticsearch 7.0
版本的問題。
新增
優化
- #3046 打包
phar
時,優化了重寫scan_cacheable
的代碼。
變更
- #3077 因組件
league/flysystem
的2.0
版本無法兼容,故降級到^1.0
。
v2.1.1 - 2021-01-04
修復
- #3045 修復
database
組件,當沒有主動設置PDO::ATTR_PERSISTENT
為true
時,導致的類型錯誤。 - #3047 修復
socketio-server
組件,為sid
續約時報錯的問題。 - #3062 修復
grpc-server
組件,入參無法被正確解析的問題。
新增
- #3052 為
metric
組件,新增了收集命令行指標的功能。 - #3054 為
socketio-server
組件,新增了Engine::close
協議支持,並在調用方法getRequest
失敗時,拋出連接已被關閉的異常。
v2.1.0 - 2020-12-28
依賴升級
- 升級
php
版本到>=7.3
。 - 升級組件
phpunit/phpunit
版本到^9.0
。 - 升級組件
guzzlehttp/guzzle
版本到^6.0|^7.0
。 - 升級組件
vlucas/phpdotenv
版本到^5.0
。 - 升級組件
endclothing/prometheus_client_php
版本到^1.0
。 - 升級組件
twig/twig
版本到^3.0
。 - 升級組件
jcchavezs/zipkin-opentracing
版本到^0.2.0
。 - 升級組件
doctrine/dbal
版本到^3.0
。 - 升級組件
league/flysystem
版本到^1.0|^2.0
。
移除
- 移除
Hyperf\Amqp\Builder
已棄用的成員變量$name
。 - 移除
Hyperf\Amqp\Message\ConsumerMessageInterface
已棄用的方法consume()
。 - 移除
Hyperf\AsyncQueue\Driver\Driver
已棄用的成員變量$running
。 - 移除
Hyperf\HttpServer\CoreMiddleware
已棄用的方法parseParameters()
。 - 移除
Hyperf\Utils\Coordinator\Constants
已棄用的常量ON_WORKER_START
和ON_WORKER_EXIT
。 - 移除
Hyperf\Utils\Coordinator
已棄用的方法get()
。 - 移除配置文件
rate-limit.php
, 請使用rate_limit.php
。 - 移除無用的類
Hyperf\Resource\Response\ResponseEmitter
。 - 將組件
hyperf/paginator
從hyperf/database
依賴中移除。 - 移除
Hyperf\Utils\Coroutine\Concurrent
中的方法stats()
。
變更
-
方法
Hyperf\Utils\Coroutine::parentId
返回父協程的協程 ID- 如果在主協程中,則會返回 0。
- 如果在非協程環境中使用,則會拋出
RunningInNonCoroutineException
異常。 - 如果協程環境已被銷燬,則會拋出
CoroutineDestroyedException
異常。
-
類
Hyperf\Guzzle\CoroutineHandler
- 刪除了
execute()
方法。 - 方法
initHeaders()
將會返回初始化好的 Header 列表, 而不是直接將$headers
賦值到客户端中。 - 刪除了
checkStatusCode()
方法。
- 刪除了
-
#2720 不再在方法
PDOStatement::bindValue()
中設置data_type
,已避免字符串索引中使用整形時,導致索引無法被命中的問題。 -
#2871 從
StreamInterface
中獲取數據時,使用(string) $body
而不是$body->getContents()
,因為方法getContents()
只會返回剩餘的數據,而非全部數據。 -
#2909 允許設置重複的中間件。
-
#2935 修改了
Exception Formatter
的默認規則。 -
#2979 命令行
gen:model
不再自動將decimal
格式轉化為float
。
即將廢棄
- 類
Hyperf\AsyncQueue\Signal\DriverStopHandler
將會在v2.2
版本中棄用, 請使用Hyperf\Process\Handler\ProcessStopHandler
代替。 - 類
Hyperf\Server\SwooleEvent
將會在v3.0
版本中棄用, 請使用Hyperf\Server\Event
代替。
新增
- #2659 #2663 新增了 Swow 驅動支持。
- #2671 新增監聽器
Hyperf\AsyncQueue\Listener\QueueHandleListener
,用來記錄異步隊列的運行日誌。 - #2923 新增類
Hyperf\Utils\Waiter
,可以用來等待一個協程結束。 - #3001 新增方法
Hyperf\Database\Model\Collection::columns()
,類似於array_column
。 - #3002 為
Json::decode
和Json::encode
新增參數$depth
和$flags
。
修復
- #2741 修復自定義進程無法在
Swow
驅動下使用的問題。
優化
- #3009 優化了
prometheus
,使其支持https
和http
協議。
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
.
優化
- #1793 Socket.io 服務現在只在 onOpen and onClose 中觸發 connect/disconnect 事件,同時將一些類方法從 private 級別調整到了 protected 級別,以便用户可以方便的重寫這些方法;
- #1848 當 RPC 客户端對應的 Contract 發生變更時,自動重寫生成對應的動態代理客户端類;
- #1863 為 async-queue 組件提供更加安全的停止機制;
- #1896 當在 constants 組件中使用了同樣的 code 時,keys 會被合併起來;
v1.1.32 - 2020-05-21
修復
- #1734 修復模型多態查詢,關聯關係為空時,也會查詢 SQL 的問題;
- #1739 修復
hyperf/filesystem
組件 OSS HOOK 位運算錯誤,導致 resource 判斷不準確的問題; - #1743 修復
grafana.json
中錯誤的refId
字段值; - #1748 修復
hyperf/amqp
組件在使用其他連接池時,對應的concurrent.limit
配置不生效的問題; - #1750 修復連接池組件,在連接關閉失敗時會導致計數有誤的問題;
- #1754 修復 BASE Server 服務,啟動提示沒有考慮 UDP 服務的情況;
- #1764 修復當時間值為 null 時,datatime 驗證器執行失敗的 BUG;
- #1769 修復
hyperf/socketio-server
組件中,客户端初始化斷開連接操作時會報 Notice 的錯誤的問題;
新增
- #1724 新增模型方法
Model::orWhereHasMorph
,Model::whereDoesntHaveMorph
andModel::orWhereDoesntHaveMorph
; - #1741 新增
Hyperf\Command\Command::choiceMultiple(): array
方法,因為choice
方法的返回類型為string,所以就算設置了
$multiple` 參數也無法處理多個選擇的情況; - #1742 新增模型 自定義類型轉換器 功能;
- 新增 interface
Castable
,CastsAttributes
和CastsInboundAttributes
; - 新增方法
Model\Builder::withCasts
; - 新增方法
Model::loadMorph
,Model::loadMorphCount
和Model::syncAttributes
;
- 新增 interface
v1.1.31 - 2020-05-14
新增
修復
優化
- #1710 MAC 系統下不再使用
cli_set_process_title
方法設置進程名。
v1.1.30 - 2020-05-07
新增
- #1616 新增 ORM 方法
morphWith
和whereHasMorph
。 - #1651 新增
socket.io-server
組件。 - #1666 #1669 新增 AMQP RPC 客户端。
修復
優化
- #1670 優化掉
Cache 組件
一條無意義的刪除指令。
v1.1.28 - 2020-04-30
新增
- #1645 匿名函數路由支持參數注入。
- #1647 為
model-cache
組件添加RedisStringHandler
。 - #1654 新增
RenderException
統一捕獲view
組件拋出的異常。
修復
- #1639 修復
rpc-client
會從consul
中獲取到不健康節點的 BUG。 - #1641 修復
rpc-client
獲取到的結果為null
時,會拋出RequestException
的 BUG。 - #1641 修復
rpc-server
中jsonrpc-tcp-length-check
協議,無法在consul
中添加心跳檢查的 BUG。 - #1650 修復腳本
describe:routes
列表展示有誤的 BUG。 - #1655 修復
MysqlProcessor::processColumns
無法在MySQL Server 8.0
版本中正常工作的 BUG。
優化
- #1636 優化
co-phpunit
腳本,當出現case
驗證失敗後,協程也可以正常結束。
v1.1.27 - 2020-04-23
新增
- #1575 為腳本
gen:model
生成的模型,自動添加relation
scope
和attributes
的變量註釋。 - #1586 添加
symfony/event-dispatcher
組件小於4.3
時的conflict
配置。用於解決用户使用了4.3
以下版本時,導致SymfonyDispatcher
實現衝突的 BUG。 - #1597 為
AMQP
消費者,添加最大消費次數maxConsumption
。 - #1603 為
WebSocket
服務添加基於fd
存儲的Context
。
修復
- #1553 修復
jsonrpc
服務,發佈了相同名字不同協議到consul
後,客户端無法正常工作的 BUG。 - #1589 修復了文件鎖在協程下可能會造成死鎖的 BUG。
- #1607 修復了重寫後的
go
方法,返回值與swoole
原生方法不符的 BUG。 - #1624 修復當路由
Handler
是匿名函數時,腳本describe:routes
執行失敗的 BUG。
v1.1.26 - 2020-04-16
新增
- #1578
UploadedFile
支持getStream
方法。
修復
- #1563 修復服務關停後,定時器的
onOneServer
配置不會被重置。 - #1565 當
DB
組件重連Mysql
時,重置事務等級為 0。 - #1572 修復
Hyperf\GrpcServer\CoreMiddleware
中,自定義類的父類找不到時報錯的 BUG。 - #1577 修復
describe:routes
腳本server
配置不生效的 BUG。 - #1579 修復
migrate:refresh
腳本step
參數不為int
時會報錯的 BUG。
變更
- #1560 修改
hyperf/cache
組件文件緩存引擎中 原生的文件操作為Filesystem
。 - #1568 修改
hyperf/async-queue
組件Redis
引擎中的\Redis
為RedisProxy
。
v1.1.25 - 2020-04-09
修復
- #1532 修復 'Symfony\Component\EventDispatcher\EventDispatcherInterface' 在 --no-dev 條件下安裝會出現找不到接口的問題;
v1.1.24 - 2020-04-09
新增
- #1501 添加
Symfony
命令行事件觸發器,使之可以與hyperf/event
組件結合使用; - #1502 為註解
Hyperf\AsyncQueue\Annotation\AsyncQueueMessage
添加maxAttempts
參數,用於控制消息失敗時重複消費的次數; - #1510 添加
Hyperf/Utils/CoordinatorManager
,用於提供更優雅的啟動和停止服務,服務啟動前不響應請求,服務停止前,保證某些循環邏輯能夠正常結束; - #1517 為依賴注入容器的懶加載功能添加了對接口繼承和抽象方法繼承的支持;
- #1529 處理
response cookies
中的SameSite
屬性;
修復
- #1494 修復單獨使用
Redis
組件時,註釋@mixin
會被當成註解的 BUG; - #1499 修復引入
hyperf/translation
組件後,hyperf/constants
組件的動態參數不生效的 BUG; - #1504 修復
RPC
代理客户端無法正常處理返回值為nullable
類型的方法; - #1507 修復
hyperf/consul
組件的catalog
註冊方法調用會失敗的 BUG;
v1.1.23 - 2020-04-02
新增
- #1467 為
filesystem
組件添加默認配置; - #1469 為
Hyperf/Guzzle/HandlerStackFactory
添加getHandler()
方法,並儘可能的使用make()
創建handler
; - #1480 RPC client 現在會自動代理父接口的方法定義;
變更
- #1481 異步隊列創建消息時,使用
make
方法創建;
修復
- #1471 修復
NSQ
組件,數據量超過max-output-buffer-size
接收數據失敗的BUG
; - #1472 修復
NSQ
組件,在消費者中發佈消息時,會導致消費者無法正常消費的BUG
; - #1474 修復
NSQ
組件,requeue
消息時,消費者會意外重啟的BUG
; - #1477 修復使用
Hyperf\Testing\Client::flushContext
時,會引發Fixed Invalid argument supplied
異常的BUG
;
v1.1.22 - 2020-03-26
新增
- #1440 為 NSQ 的每個連接新增
enable
配置項來控制連接下的所有消費者的自啟功能; - #1451 新增 Filesystem 組件;
- #1459 模型 Collection 新增 macroable 支持;
- #1463 為 Guzzle Handler 增加
on_stats
選項的功能支持;
變更
修復
- #1445 修復命令
describe:routes
缺失了帶參數的路由; - #1449 修復了高基數請求路徑的內存溢出的問題;
- #1454 修復 Collection 的
flatten()
方法因為INF
參數值為float
類型導致無法使用的問題; - #1458 修復了 Guzzle 不支持 Elasticsearch 版本大於 7.0 的問題;
v1.1.21 - 2020-03-19
新增
- #1393 為
Hyperf\HttpMessage\Stream\SwooleStream
實現更多的方法; - #1419 允許 ConfigFetcher 通過一個協程啟動而無需額外啟動一個進程;
- #1424 允許用户通過配置文件的形式修改
session_name
配置; - #1435 為模型緩存增加
use_default_value
屬性來自動修正緩存數據與數據庫數據之間的差異; - #1436 為 NSQ 消費者增加
isEnable()
方法來控制消費者進程是否啟用自啟功能;
v1.1.20 - 2020-03-12
新增
- #1402 增加
Hyperf\DbConnection\Annotation\Transactional
註解來自動開啟一個事務; - #1412 增加
Hyperf\View\RenderInterface::getContents()
方法來直接獲取 View Render 的渲染內容; - #1416 增加 Swoole 事件常量
ON_WORKER_ERROR
.
修復
- #1405 修復當模型存在
hidden
屬性時,模型緩存功能緩存的字段數據不正確的問題; - #1410 修復 Tracer 無法追蹤由
Hyperf\Redis\RedisFactory
創建的連接的調用鏈; - #1415 修復阿里 ACM 客户端在當
SecurityToken
Header 為空時 sts token 會解密失敗的問題;
v1.1.19 - 2020-03-05
新增
- #1339 #1394 新增
describe:routes
命令來顯示路由的細節信息; - #1354 為
config-aliyun-acm
組件新增 ecs ram authorization; - #1362 為
Hyperf\Pool\SimplePool\PoolFactory
增加getPoolNames()
來獲取連接池的名稱; - #1371 新增
Hyperf\DB\DB::connection()
方法來指定要使用的連接; - #1384 為
gen:model
命令新增property-case
選項來設定成員屬性的命名風格;
修復
- #1386 修復異步消息投遞註解當用在存在可變參數的方法上失效的問題;
v1.1.18 - 2020-02-27
新增
- #1305 為
hyperf\metric
組件添加預製的Grafana
面板; - #1328 添加
ModelRewriteInheritanceVisitor
來重寫 model 類繼承的gen:model
命令; - #1331 添加
Hyperf\LoadBalancer\LoadBalancerInterface::getNodes()
; - #1335 為
command
添加AfterExecute
事件; - #1361 logger 組件添加
processors
配置;
修復
- #1330 修復當使用
(new Parallel())->add($callback, $key)
並且參數$key
並非 string 類型, 返回結果將會從 0 開始排序$key
; - #1338 修復當從 server 設置自己的設置時, 主 server 的配置不生效的 bug;
- #1344 修復隊列在沒有設置最大消息數時每次都需要校驗長度的 bug;
變更
- #1324 hyperf/async-queue 組件不再提供默認啟用
Hyperf\AsyncQueue\Listener\QueueLengthListener
;
優化
刪除
- #1303 刪除
Hyperf\RpcServer\Router\Router
中無用的$httpMethod
;
v1.1.17 - 2020-01-24
新增
- #1220 為 Apollo 組件增加 BootProcessListener 來實現在服務啟動時從 Apollo 拉取配置的功能;
- #1292 為
Hyperf\Database\Schema\Blueprint::foreign()
方法的返回類型增加了Hyperf\Database\Schema\ForeignKeyDefinition
類型; - #1313 為
hyperf\crontab
組件增加了 Command 模式支持; - #1321 增加 hyperf/nsq 組件,NSQ 是一個實時的分佈式消息平台;
修復
- #1291 修復 hyperf/super-globals 組件的
$_SERVER
存在小寫鍵值與 PHP-FPM 不統一的問題; - #1308 修復 hyperf/validation 組件缺失的一些翻譯內容, 包括 gt, gte, ipv4, ipv6, lt, lte, mimetypes, not_regex, starts_with, uuid;
- #1310 修復服務註冊在當服務同名不同協議的情況下會被覆蓋的問題;
- #1315 修復
Hyperf\AsyncQueue\Process\ConsumerProcess
類缺失的 $config 變量;
v1.1.16 - 2020-01-16
新增
- #1263 為 async-queue 組件增加
QueueLength
事件; - #1276 為 Consul 客户端增加 ACL token 支持;
- #1277 為 hyperf/metric 組件增加 NoOp 驅動,用來臨時關閉 metric 功能;
修復
- #1262 修復 keepaliveIO 功能下 socket 會被消耗光的問題;
- #1266 修復當自定義進程存在 Timer 的情況下會無法重啟的問題;
- #1272 修復 JSONRPC 下當 Request ID 為 null 時檢查會失敗的問題;
優化
- #1273 優化 gRPC 客户端:
- 優化使 gRPC 客户端在當連接與 Server 斷開時會自動重連;
- 優化使當 gRPC 客户端被垃圾回收時,已建立的連接會自動關閉;
- 修復關閉了的客户端依舊會持有 HTTP2 連接的問題;
- 修復 gRPC 客户端的 channel pool 可能會存在非空 channel 的問題;
- 優化使 gRPC 客户端會自動初始化,所以現在可以在構造函數和容器注入下使用;
刪除
- #1286 從 require-dev 中移除 phpstan/phpstan 包的依賴。
v1.1.15 - 2020-01-10
修復
v1.1.14 - 2020-01-10
新增
- #1166 為 AMQP 增加 KeepaliveIO 功能;
- #1208 為 JSON-RPC 的響應增加了
error.data.code
值來傳遞 Exception Code; - #1208 為
Hyperf\Rpc\Contract\TransporterInterface
增加了recv
方法; - #1215 新增 hyperf/super-globals 組件,用來適配一些不支持 PSR-7 的第三方包;
- #1219 為 AMQP 消費者增加
enable
屬性,通過該屬性來控制該消費者是否跟隨 Server 一同啟動;
修復
- #1208 修復 Exception 和 error 在 JSON-RPC TCP Server 下無法被正確處理的問題;
- #1208 修復 JSON-RPC 沒有檢查 Request ID 和 Response ID 是否一致的問題;
- #1223 修復 ConfigProvider 掃描器不會掃描 composer.json 內 require-dev 的配置;
- #1254 修復執行
init-proxy.sh
命令在某些環境如 Alpine 下會報 bash 不存在的問題;
優化
- #1208 優化了 JSON-RPC 組件的部分邏輯;
- #1174 調整了
Hyperf\Utils\Parallel
在輸出異常時的格式,現在會一同打印 Trace 信息; - #1224 允許 Aliyun ACM 配置中心的配置獲取進程解析 UTF-8 字符,同時在 Worker 啟動後會自動獲取一次配置,以及拉取的配置現在會傳遞到自定義進程了;
- #1235 在 AMQP 生產者執行 declare 後釋放對應的連接;
修改
- #1227 升級
jcchavezs/zipkin-php-opentracing
依賴至 0.1.4 版本;
v1.1.13 - 2020-01-03
新增
- #1137
constants
組件增加國際化支持; - #1165
Hyperf\HttpServer\Contract\RequestInterface
新增route
方法; - #1195 註解
Cacheable
和CachePut
增加最大超時時間偏移量配置; - #1204
database
組件增加了insertOrIgnore
方法; - #1216
RenderInterface::render()
方法的$data
參數,添加了默認值; - #1221
swoole-tracker
組件添加了traceId
和spanId
;
修復
- #1175 修復
Hyperf\Utils\Collection::random
當傳入null
時,無法正常工作的BUG
; - #1199 修復使用
Task
註解時,參數無法使用動態變量的BUG
; - #1200 修復
metric
組件,請求路徑會攜帶參數的BUG
; - #1210 修復驗證器規則
size
無法作用於integer
的BUG
;
優化
- #1211 自動將項目名轉化為
prometheus
的規範命名;
修改
- #1217 將
zendframework/zend-mime
替換為laminas/laminas-mine
;
v1.1.12 - 2019-12-26
新增
- #1177 為
jsonrpc
組件增加了新的協議jsonrpc-tcp-length-check
,並對部分代碼進行了優化;
修復
- #1175 修復
Hyperf\Utils\Collection::random
方法不支持傳入null
; - #1178 修復
Hyperf\Database\Query\Builder::chunkById
方法不支持元素是array
的情況; - #1189 修復
Hyperf\Utils\Collection::operatorForWhere
方法,operator
只能傳入string
的 BUG;
優化
- #1186 日誌配置中,只填寫
formatter.class
的情況下,可以使用默認的formatter.constructor
配置;
v1.1.11 - 2019-12-19
新增
- #849 為 hyperf/tracer 組件增加 span tag 配置功能;
修復
- #1142 修復
Register::resolveConnection
會返回 null 的問題; - #1144 修復配置文件形式下服務限流會失效的問題;
- #1145 修復
CoroutineMemoryDriver::delKey
方法的返回值錯誤的問題; - #1153 修復驗證器的
alpha_num
規則無法按預期運行的問題;
v1.1.10 - 2019-12-12
修復
- #1104 修復了 Guzzle 客户端的重試中間件的狀態碼識別範圍為 2xx;
- #1105 修復了 Retry 組件在重試嘗試前不還原管道堆棧的問題;
- #1106 修復了數據庫在開啟
sticky
模式時連接回歸連接池時沒有重置狀態的問題; - #1119 修復 TCP 協議下的 JSONRPC Server 在解析 JSON 失敗時無法正確的返回預期的 Error Response 的問題;
- #1124 修復 Session 中間件在儲存當前的 URL 時,當 URL 以
/
結尾時會忽略斜槓的問題;
變更
- #1108 重命名
Hyperf\Tracer\Middleware\TraceMiddeware
為Hyperf\Tracer\Middleware\TraceMiddleware
; - #1108 升級
Hyperf\ServiceGovernance\Listener\ServiceRegisterListener
類的成員屬性和方法的等級為protected
,以便更好的重寫相關方法;
v1.1.9 - 2019-12-05
新增
- #948 為 DI Container 增加懶加載功能;
- #1044 為 AMQP Consumer 增加
basic_qos
配置; - #1056 #1081 DI Container 增加
define()
和set()
方法,同時增加Hyperf\Contract\ContainerInterface
; - #1059
job.stub
模板增加構造函數; - #1084 支持 PHP 7.4,TrvisCI 增加 PHP 7.4 運行支持;
修復
- #1007 修復
vendor:: publish
的命令返回值; - #1049 修復
Hyperf\Cache\Driver\RedisDriver::clear
會有可能刪除所有緩存失敗的問題; - #1055 修復 Image 驗證時後綴大小寫的問題;
- #1085 #1091 Fixed
@Retry
註解使用時會找不到容器的問題;
v1.1.8 - 2019-11-28
新增
修復
變更
- #1021 WebSocket 客户端新增默認端口支持,根據協議默認為 80 和 443;
- #1034 去掉了
Hyperf\Amqp\Builder\Builder
的arguments
參數的 array 類型限制,允許接受其他類型如 AmqpTable;
優化
- #1014 優化
Command::execute
的返回值類型; - #1022 提供更清晰友好的連接池報錯信息;
- #1039 在 CoreMiddleware 中自動設置最新的 ServerRequest 對象到 Context;
v1.1.7 - 2019-11-21
新增
- #860 新增 hyperf/retry 組件;
- #952 新增 ThinkTemplate 視圖引擎支持;
- #973 新增 JSON RPC 在 TCP 協議下的連接池支持,通過
Hyperf\JsonRpc\JsonRpcPoolTransporter
來使用連接池版本; - #976 為
hyperf/amqp
組件新增close_on_destruct
選項參數,用來控制代碼在執行析構函數時是否主動去關閉連接;
變更
- #944 將組件內所有使用
@Listener
和@Process
註解來註冊的改成通過ConfigProvider
來註冊; - #977 調整
init-proxy.sh
命令的行為,改成只刪除runtime/container
目錄;
修復
- #955 修復
hyperf/db
組件的port
和charset
參數無效的問題; - #956 修復模型緩存中使用到
RedisHandler::incr
在集羣模式下會失敗的問題; - #966 修復當在非 Worker 進程環境下使用分頁器會報錯的問題;
- #968 修復當
classes
和annotations
兩種 Aspect 切入模式同時存在於一個類時,其中一個可能會失效的問題; - #980 修復 Session 組件內
migrate
,save
核has
方法無法使用的問題; - #982 修復
Hyperf\GrpcClient\GrpcClient::yield
在獲取 Channel Pool 時沒有通過正確的獲取方式去獲取的問題; - #987 修復通過
gen:command
命令生成的命令類缺少調用parent::configure()
方法的問題;
優化
- #991 優化
Hyperf\DbConnection\ConnectionResolver::connection
的異常情況處理;
v1.1.6 - 2019-11-14
新增
- #827 新增了極簡的高性能的 DB 組件;
- #905 視圖組件增加了
twig
模板引擎; - #911 定時任務支持多實例情況下,只運行單一實例的定時任務;
- #913 增加監聽器
Hyperf\ExceptionHandler\Listener\ErrorExceptionHandler
; - #921 新增
Session
組件; - #931 阿波羅配置中心增加
strict_mode
,自動將配置轉化成對應數據類型; - #933 視圖組件增加了
plates
模板引擎; - #937 Nats 組件添加消費者消費和訂閲事件;
- #941 新增
Zookeeper
配置中心;
變更
- #934 修改
WaitGroup
繼承\Swoole\Coroutine\WaitGroup
;
修復
- #897 修復
Nats
消費者,pool
配置無效的 BUG; - #901 修復
GraphQL
組件,Factory
註解無法正常使用的 BUG; - #903 修復添加
hyperf/rpc-client
依賴後,init-proxy
腳本無法正常停止的 BUG; - #904 修復監聽器監聽
Hyperf\Framework\Event\BeforeMainServerStart
事件時,無法使用IO
操作的 BUG; - #906 修復
Hyperf\HttpMessage\Server\Request
端口獲取有誤的 BUG; - #907 修復
Nats
組件requestSync
方法,超時時間不準確的 BUG; - #909 修復
Parallel
內邏輯拋錯後,無法正常停止的 BUG; - #925 修復因
Socket
無法正常建立,導致進程頻繁重啟的 BUG; - #932 修復
Translator::setLocale
在協程環境下,數據混淆的 BUG; - #940 修復
WebSocketClient::push
方法finish
參數類型錯誤;
優化
- #907 優化
Nats
消費者頻繁重啟; - #928
Hyperf\ModelCache\Cacheable::query
批量修改數據時,可以刪除對應緩存; - #936 優化調用模型緩存
increment
時,可能因併發情況導致的數據有錯;
v1.1.5 - 2019-11-07
新增
- #812 新增計劃任務在集羣下僅執行一次的支持;
- #820 新增 hyperf/nats 組件;
- #832 新增
Hyperf\Utils\Codec\Json
; - #833 新增
Hyperf\Utils\Backoff
; - #852 為
Hyperf\Utils\Parallel
新增clear()
方法來清理所有已添加的回調; - #854 新增
Hyperf\GraphQL\GraphQLMiddleware
用於解析 GraphQL 請求; - #859 新增 Consul 集羣的支持,現在可以從 Consul 集羣中拉取服務提供者的節點信息;
- #873 新增 Redis 集羣的客户端支持;
修復
- #831 修復 Redis 客户端連接在 Redis Server 重啟後不會自動重連的問題;
- #835 修復
Request::inputs
方法的默認值參數與預期效果不一致的問題; - #841 修復數據庫遷移在多數據庫的情況下連接無效的問題;
- #844 修復 Composer 閲讀器不支持根命名空間的用法的問題;
- #846 修復 Redis 客户端的
scan
,hScan
,zScan
,sScan
無法使用的問題; - #850 修復 Logger group 在 name 一樣時不生效的問題;
優化
- #832 優化了 Response 對象在轉 JSON 格式時的異常處理邏輯;
- #840 使用
\Swoole\Timer::*
來替代swoole_timer_*
函數; - #859 優化了 RPC 客户端去 Consul 獲取健康的節點信息的邏輯;
v1.1.4 - 2019-10-31
新增
- #778
Hyperf\Testing\Client
新增PUT
和DELETE
方法; - #784 新增服務監控組件;
- #795
AbstractProcess
增加restartInterval
參數,允許子進程異常或正常退出後,延遲重啟; - #804
Command
增加事件BeforeHandle
AfterHandle
和FailToHandle
;
變更
- #793
Pool::getConnectionsInChannel
方法由protected
改為public
. - #811 命令
di:init-proxy
不再主動清理代理緩存,如果想清理緩存請使用命令vendor/bin/init-proxy.sh
;
修復
- #779 修復
JPG
文件驗證不通過的問題; - #787 修復
db:seed
參數--class
多餘,導致報錯的問題; - #795 修復自定義進程在異常拋出後,無法正常重啟的 BUG;
- #796 修復
etcd
配置中心enable
即時設為false
,在項目啟動時,依然會拉取配置的 BUG;
優化
v1.1.3 - 2019-10-24
新增
- #745 為
gen:model
命令增加with-comments
選項,以標記是否生成字段註釋; - #747 為 AMQP 消費者增加
AfterConsume
,BeforeConsume
,FailToConsume
事件; - #762 為 Parallel 特性增加協程控制功能;
變更
- #767 重命名
AbstractProcess
的running
屬性名為listening
;
修復
- #741 修復執行
db:seed
命令缺少文件名報錯的問題; - #748 修復
SymfonyNormalizer
不處理array
類型數據的問題; - #769 修復當 JSON RPC 響應的結果的 result 和 error 屬性為 null 時會拋出一個無效請求的問題;
v1.1.2 - 2019-10-17
新增
- #722 為 AMQP Consumer 新增
concurrent.limit
配置來對協程消費進行速率限制;
變更
- #678 為
gen:model
命令增加ignore-tables
參數,同時默認屏蔽migrations
表,即migrations
表對應的模型在執行gen:model
命令時不會生成;
修復
- #694 修復
Hyperf\Validation\Request\FormRequest
的validationData
方法不包含上傳的文件的問題; - #700 修復
Hyperf\HttpServer\Contract\ResponseInterface
的download
方法不能按預期運行的問題; - #701 修復自定義進程在出現未捕獲的異常時不會自動重啟的問題;
- #704 修復
Hyperf\Validation\Middleware\ValidationMiddleware
在 action 參數沒有定義參數類型時會報錯的問題; - #713 修復當開啟了註解緩存功能是,
ignoreAnnotations
不能按預期工作的問題; - #717 修復
getValidatorInstance
方法會重複創建驗證器對象的問題; - #724 修復
db:seed
命令在沒有傳database
參數時會報錯的問題; - #729 修正組件配置項
db:model
為gen:model
; - #737 修復非 Worker 進程下無法使用 Tracer 組件來追蹤調用鏈的問題;
v1.1.1 - 2019-10-08
Fixed
- #664 調整通過
gen:request
命令生成 FormRequest 時authorize
方法的默認返回值; - #665 修復啟動時永遠會自動生成代理類的問題;
- #667 修復當訪問一個不存在的路由時
Hyperf\Validation\Middleware\ValidationMiddleware
會拋出異常的問題; - #672 修復當 Action 方法上的參數類型為非對象類型時
Hyperf\Validation\Middleware\ValidationMiddleware
會拋出一個未捕獲的異常的問題; - #674 修復使用
gen:model
命令從數據庫生成模型時模型表名錯誤的問題;
v1.1.0 - 2019-10-08
新增
- #401 新增了
Hyperf\HttpServer\Router\Dispatched
對象來儲存解析的路由信息,在用户中間件之前便解析完成以便後續的使用,同時也修復了路由裏帶參時中間件失效的問題; - #402 新增
@AsyncQueueMessage
註解,通過定義此註解在方法上,表明這個方法的實際運行邏輯是投遞給 Async-Queue 隊列去消費; - #418 允許發送 WebSocket 消息到任意的 fd,即使當前的 Worker 進程不持有對應的 fd,框架會自動進行進程間通訊來實現發送;
- #420 為數據庫模型增加新的事件機制,與 PSR-15 的事件調度器相配合,可以解耦的定義 Listener 來監聽模型事件;
- #429 #643 新增 Validation 表單驗證器組件,這是一個衍生於 illuminate/validation 的組件,感謝 Laravel 開發組提供如此好用的驗證器組件,;
- #441 當 Redis 連接處於低使用頻率的情況下自動關閉空閒連接;
- #478 更好的適配 OpenTracing 協議,同時適配 Jaeger,Jaeger 是一款優秀的開源的端對端分佈式調用鏈追蹤系統;
- #500 為
Hyperf\HttpServer\Contract\ResponseInterface
增加鏈式方法調用支持,解決調用了代理方法的方法後無法再調用原始方法的問題; - #523 為
gen:model
命令新增了table-mapping
選項; - #555 新增了一個全局函數
swoole_hook_flags
來獲取由常量SWOOLE_HOOK_FLAGS
所定義的 Runtime Hook 等級,您可以在bin/hyperf.php
通過! defined('SWOOLE_HOOK_FLAGS') && define('SWOOLE_HOOK_FLAGS', SWOOLE_HOOK_ALL);
的方式來定義該常量,即 Runtime Hook 等級; - #596 為
@Inject
註解增加了required
參數,當您定義@Inject(required=false)
註解到一個成員屬性上,那麼當該依賴項不存在時也不會拋出Hyperf\Di\Exception\NotFoundException
異常,而是以默認值null
來注入,required
參數的默認值為true
,當在構造器注入的情況下,您可以通過對構造器的參數定義為nullable
來達到同樣的目的; - #597 為 AsyncQueue 組件的消費者增加
Concurrent
來控制消費速率; - #599 為 AsyncQueue 組件的消費者增加根據當前重試次數來設定該消息的重試等待時長的功能,可以為消息設置階梯式的重試等待;
- #619 為 Guzzle 客户端增加 HandlerStackFactory 類,以便更便捷地創建一個 HandlerStack;
- #620 為 AsyncQueue 組件的消費者增加自動重啟的機制;
- #629 允許通過配置文件的形式為 Apollo 客户端定義
clientIp
,pullTimeout
,intervalTimeout
配置; - #647 根據 server 的配置,自動為 TCP Response 追加
eof
; - #648 為 AMQP Consumer 增加
nack
的返回類型,當消費邏輯返回Hyperf\Amqp\Result::NACK
時抽象消費者會以basic_nack
方法來響應消息; - #654 增加所有 Swoole Event 的默認回調和對應的 Hyperf 事件;
變更
- #437
Hyperf\Testing\Client
在遇到異常時不再直接拋出異常而是交給 ExceptionHandler 流程處理; - #463 簡化了
container.php
文件及優化了註解緩存機制;
新的 config/container.php 文件內容如下:
<?php
use Hyperf\Di\Container;
use Hyperf\Di\Definition\DefinitionSourceFactory;
use Hyperf\Utils\ApplicationContext;
$container = new Container((new DefinitionSourceFactory(true))());
if (! $container instanceof \Psr\Container\ContainerInterface) {
throw new RuntimeException('The dependency injection container is invalid.');
}
return ApplicationContext::setContainer($container);
- #486
Hyperf\HttpMessage\Server\Request
的getParsedBody
方法現在可以直接處理 JSON 格式的數據了; - #523 調整
gen:model
命令生成的模型類名默認為單數,如果表名為複數,則默認生成的類名為單數; - #614 #617 調整了 ConfigProvider 類的結構, 同時將
config/dependencies.php
文件移動到了config/autoload/dependencies.php
內,且文件結構去除了dependencies
層,此後也意味着您也可以將dependencies
配置寫到config/config.php
文件內;
Config Provider 內數據結構的變化: 之前:
'scan' => [
'paths' => [
__DIR__,
],
'collectors' => [],
],
現在:
'annotations' => [
'scan' => [
'paths' => [
__DIR__,
],
'collectors' => [],
],
],
增加了一層 annotations,這樣將與配置文件結構一致,不再特殊
- #630 變更了
Hyperf\HttpServer\CoreMiddleware
類的實例化方式,使用make()
來替代了new
; - #631 變更了 AMQP Consumer 的實例化方式,使用
make()
來替代了new
; - #637 調整了
Hyperf\Contract\OnMessageInterface
和Hyperf\Contract\OnOpenInterface
的第一個參數的類型約束, 使用Swoole\WebSocket\Server
替代Swoole\Server
; - #638 重命名了
db:model
命令為gen:model
命令,同時增加了一個 Visitor 來優化創建的$connection
成員屬性,如果要創建的模型類的$connection
屬性的值與繼承的父類一致,那麼創建的模型類將不會包含此屬性;
移除
- #401 移除了
Hyperf\JsonRpc\HttpServerFactory
,Hyperf\HttpServer\ServerFactory
,Hyperf\GrpcServer\ServerFactory
類; - #402 移除了棄用的
AsyncQueue::delay
方法; - #563 移除了棄用的
Hyperf\Server\ServerInterface::SERVER_TCP
常量,使用Hyperf\Server\ServerInterface::SERVER_BASE
來替代; - #602 移除了
Hyperf\Utils\Coroutine\Concurrent
的timeout
參數; - #612 移除了 RingPHP Handler 裏沒有使用到的
$url
變量; - #616 #618 移除了 Guzzle 裏一些無用的代碼;
優化
- #644 優化了註解掃描的流程,分開
app
和vendor
兩部分來掃描註解,大大減少了用户的掃描耗時; - #653 優化了 Swoole shortname 的檢測邏輯,現在的檢測邏輯更加貼合 Swoole 的實際配置場景,也不只是
swoole.use_shortname = "Off"
才能通過檢測了;
修復
- #448 修復了當 HTTP Server 或 WebSocket Server 存在時,TCP Server 有可能無法啟動的問題;
- #623 修復了當傳遞一個
null
值到代理類的方法參數時,方法仍然會獲取方法默認值的問題;
v1.0.16 - 2019-09-20
新增
- #565 增加對 Redis 客户端的
options
配置參數支持; - #580 增加協程併發控制特性,通過
Hyperf\Utils\Coroutine\Concurrent
可以實現一個代碼塊內限制同時最多運行的協程數量;
變更
- #583 當
BaseClient::start
失敗時會拋出Hyperf\GrpcClient\Exception\GrpcClientException
異常; - #585 當投遞到 TaskWorker 執行的 Task 失敗時,會回傳異常到 Worker 進程中;
修復
- #564 修復某些情況下
Coroutine\Http2\Client->send
返回值不正確的問題; - #567 修復當 JSON RPC 消費者配置 name 不是接口時,無法生成代理類的問題;
- #571 修復 ExceptionHandler 的
stopPropagation
的協程變量污染的問題; - #579 動態初始化
snowflake
的 MetaData,主要修復當在命令模式下使用 Snowflake 時,比如di:init-proxy
命令,會連接到 Redis 服務器至超時;
v1.0.15 - 2019-09-11
修復
- #534 修復 Guzzle HTTP 客户端的
CoroutineHanlder
沒有處理狀態碼為-3
的情況; - #541 修復 gRPC 客户端的
$client
參數設置錯誤的問題; - #542 修復
Hyperf\Grpc\Parser::parseResponse
無法支持 gRPC 標準狀態碼的問題; - #551 修復當服務端關閉了 gRPC 連接時,gRPC 客户端會殘留一個死循環的協程;
- #558 修復
UDP Server
無法正確配置啟動的問題;
優化
- #549 優化了
Hyperf\Amqp\Connection\SwooleIO
的read
和write
方法,減少不必要的重試; - #559 優化
Hyperf\HttpServer\Response::redirect()
方法,自動識別鏈接首位是否為斜槓併合理修正參數; - #560 優化
Hyperf\WebSocketServer\CoreMiddleware
,移除了不必要的代碼;
移除
- #545 移除了
Hyperf\Database\Model\SoftDeletes
內無用的restoring
和restored
靜態方法;
即將移除
- #558 標記了
Hyperf\Server\ServerInterface::SERVER_TCP
常量為棄用
狀態,該常量將於v1.1
移除,由更合理的Hyperf\Server\ServerInterface::SERVER_BASE
常量替代;
v1.0.14 - 2019-09-05
新增
- #389 #419 #432 #524 新增 Snowflake 官方組件, Snowflake 是一個由 Twitter 提出的分佈式全局唯一 ID 生成算法,hyperf/snowflake 組件實現了該算法並設計得易於使用,同時在設計上提供了很好的可擴展性,可以很輕易的將該組件轉換成其它基於 Snowflake 算法的變體算法;
- #525 為
Hyperf\HttpServer\Contract\ResponseInterface
增加一個download()
方法,提供便捷的下載響應返回;
變更
- #482 生成模型文件時,當設置了
refresh-fillable
選項時重新生成模型的fillable
屬性,同時該命令的默認情況下將不會再覆蓋生成fillable
屬性; - #501 當
Mapping
註解的path
屬性為一個空字符串時,那麼該路由則為/prefix
; - #513 如果項目設置了
app_name
屬性,則進程名稱會自動帶上該名稱; - #508 #526 當在非協程環境下執行
Hyperf\Utils\Coroutine::parentId()
方法時會返回一個null
值;
修復
- #479 修復了當 Elasticsearch client 的
host
屬性設置有誤時,返回類型錯誤的問題; - #514 修復當 Redis 密碼配置為空字符串時鑑權失敗的問題;
- #527 修復 Translator 無法重複翻譯的問題;
v1.0.13 - 2019-08-28
新增
- #449 新增一個獨立組件 hyperf/translation, 衍生於 illuminate/translation;
- #449 為 GRPC-Server 增加標準錯誤碼;
- #450 為
Hyperf\Database\Schema\Schema
類的魔術方法增加對應的靜態方法註釋,為 IDE 提供代碼提醒的支持;
變更
- #451 在使用
@AutoController
註解時不再會自動為魔術方法生成對應的路由; - #468 讓 GRPC-Server 和 HTTP-Server 提供的異常處理器處理所有的異常,而不只是
ServerException
;
修復
v1.0.12 - 2019-08-21
新增
- #405 增加
Hyperf\Utils\Context::override()
方法,現在你可以通過override
方法獲取某些協程上下文的值並修改覆蓋它; - #415 對 Logger 的配置文件增加多個 Handler 的配置支持;
變更
- #431 移除了
Hyperf\GrpcClient\GrpcClient::openStream()
的第 3 個參數,這個參數不會影響實際使用;
修復
- #414 修復
Hyperf\WebSockerServer\Exception\Handler\WebSocketExceptionHandler
內的變量名稱錯誤的問題; - #424 修復 Guzzle 在使用
Hyperf\Guzzle\CoroutineHandler
時配置proxy
參數時不支持數組傳值的問題; - #430 修復
Hyperf\HttpServer\Request::file()
當以一個 Name 上傳多個文件時,返回格式不正確的問題; - #431 修復 GRPC Client 的 Request 對象在發送 Force-Close 請求時缺少參數的問題;
v1.0.11 - 2019-08-15
新增
- #366 增加
Hyperf\Server\Listener\InitProcessTitleListener
監聽者來設置進程名稱, 同時增加了Hyperf\Framework\Event\OnStart
和Hyperf\Framework\Event\OnManagerStart
事件;
修復
- #361 修復
db:model
命令在 MySQL 8 下不能正常運行; - #369 修復實現
\Serializable
接口的自定義異常類不能正確的序列化和反序列化問題; - #384 修復用户自定義的
ExceptionHandler
在 JSON RPC Server 下無法正常工作的問題,因為框架默認自動處理了對應的異常; - #370 修復了
Hyperf\GrpcClient\BaseClient
的$client
屬性在流式傳輸的時候設置了錯誤的類型的值的問題, 同時增加了默認的content-type
為application/grpc+proto
,以及允許用户通過自定義Request
對象來重寫buildRequest()
方法;
變更
- #356 #390 優化 aysnc-queue 組件當生成 Job 時,如果 Job 實現了
Hyperf\Contract\CompressInterface
,那麼 Job 對象會被壓縮為一個更小的對象; - #358 只有當
$enableCache
為true
時才生成註解緩存文件; - #359 #390 為
Collection
和Model
增加壓縮能力,當類實現Hyperf\Contract\CompressInterface
可通過compress
方法生成一個更小的對象;
v1.0.10 - 2019-08-09
新增
- #321 為 HTTP Server 的 Controller/RequestHandler 參數增加自定義對象類型的數組支持,特別適用於 JSON RPC 下,現在你可以通過在方法上定義
@var Object[]
來獲得框架自動反序列化對應對象的支持; - #324 增加一個實現於
Hyperf\Contract\IdGeneratorInterface
的 ID 生成器NodeRequestIdGenerator
; - #336 增加動態代理的 RPC 客户端功能;
- #346 #348 為
hyperf/cache
緩存組件增加文件驅動;
變更
- #330 當掃描的 $paths 為空時,不輸出掃描信息;
- #328 根據 Composer 的 PSR-4 定義的規則加載業務項目;
- #329 優化 JSON RPC 服務端和客户端的異常消息處理;
- #340 為
make
函數增加索引數組的傳參方式; - #349 重命名下列類,修正由於拼寫錯誤導致的命名錯誤;
原類名 | 修改後的類名 |
---|---|
Hyperf\Database\Commands\Ast\ModelUpdateVistor | Hyperf\Database\Commands\Ast\ModelUpdateVisitor |
Hyperf\Di\Aop\ProxyClassNameVistor | Hyperf\Di\Aop\ProxyClassNameVisitor |
Hyperf\Di\Aop\ProxyCallVistor | Hyperf\Di\Aop\ProxyCallVisitor |
修復
- #325 優化 RPC 服務註冊時會多次調用 Consul Services 的問題;
- #332 修復
Hyperf\Tracer\Middleware\TraceMiddeware
在新版的 openzipkin/zipkin 下的類型約束錯誤; - #333 修復
Redis::delete()
方法在 5.0 版不存在的問題; - #334 修復向阿里雲 ACM 配置中心拉取配置時,部分情況下部分配置無法更新的問題;
- #337 修復當 Header 的 key 為非字符串類型時,會返回 500 響應的問題;
- #338 修復
ProviderConfig::load
在遇到重複 key 時會導致在深度合併時將字符串轉換成數組的問題;
v1.0.9 - 2019-08-03
新增
修復
- #300 讓 AsyncQueue 的消息於子協程內來進行處理,修復
attempts
參數與實際重試次數不一致的問題; - #305 修復
Hyperf\Utils\Arr::set
方法的$key
參數不支持int
個null
的問題; - #312 修復
Hyperf\Amqp\BeforeMainServerStartListener
監聽器的優先級錯誤的問題; - #315 修復 ETCD 配置中心在 Worker 進程重啟後或在自定義進程內無法使用問題;
- #318 修復服務會持續註冊到服務中心的問題;
變更
- #323 強制轉換
Cacheable
和CachePut
註解的$ttl
屬性為int
類型;
v1.0.8 - 2019-07-31
新增
變更
修復
- #271 修復了 AOP 在
classes
只會策略下配置同一個類的多個方法只會實現第一個方法的代理方法的問題; - #285 修復了 AOP 在匿名類下生成節點存在丟失的問題;
- #286 自動
rollback
沒有commit
或rollback
的 MySQL 連接; - #292 修復了
Request::header
方法的$default
參數無效的問題; - #293 修復了
Arr::get
方法的$key
參數不支持int
andnull
傳值的問題;
v1.0.7 - 2019-07-26
修復
v1.0.6 - 2019-07-24
新增
- #203 #236 #247 #252 增加視圖組件,支持 Blade 引擎和 Smarty 引擎;
- #203 增加 Task 組件,適配 Swoole Task 機制;
- #245 增加 TaskWorkerStrategy 和 WorkerStrategy 兩種定時任務調度策略.
- #251 增加用協程上下文作為儲存的緩存驅動;
- #254 增加
RequestMapping::$methods
對數組傳值的支持, 現在可以通過@RequestMapping(methods={"GET"})
和@RequestMapping(methods={RequestMapping::GET})
兩種新的方式定義方法; - #255 控制器返回
Hyperf\Utils\Contracts\Arrayable
會自動轉換為 Response 對象, 同時對返回字符串的響應對象增加text/plain
Content-Type; - #256 如果
Hyperf\Contract\IdGeneratorInterface
存在容器綁定關係, 那麼json-rpc
客户端會根據該類自動生成一個請求 ID 並儲存在 Request attribute 裏,同時完善了JSON RPC
在 TCP 協議下的服務註冊及健康檢查;
變更
修復
- #235 為
grpc-server
增加了默認的錯誤處理器,防止錯誤拋出. - #240 優化了 OnPipeMessage 事件的觸發,修復會被多個監聽器獲取錯誤數據的問題;
- #257 修復了在某些環境下無法獲得內網 IP 的問題;
v1.0.5 - 2019-07-17
新增
變更
- #195 變更
retry()
函數的$times
參數的行為意義, 表示重試的次數而不是執行的次數; - #198 優化
Hyperf\Di\Container
的has()
方法, 當傳遞一個不可實例化的示例(如接口)至$container->has($interface)
方法時,會返回false
; - #199 當生產 AMQP 消息失敗時,會自動重試一次;
- #200 通過 Git 打包項目的部署包時,不再包含
tests
文件夾;
修復
- #176 修復
LengthAwarePaginator::nextPageUrl()
方法返回值的類型約束; - #188 修復 Guzzle Client 的代理設置不生效的問題;
- #211 修復 RPC Client 存在多個時會被最後一個覆蓋的問題;
- #212 修復 Guzzle Client 的
ssl_key
和cert
配置項不能正常工作的問題;
v1.0.4 - 2019-07-08
新增
- #140 支持 Swoole v4.4.0.
- #152 數據庫連接在低使用率時連接池會自動釋放連接
- #163 constants 組件的
AbstractConstants::__callStatic
支持自定義參數
變更
- #124
DriverInterface::push
增加$delay
參數用於設置延遲時間, 同時DriverInterface::delay
將標記為棄用的,將於 1.1 版本移除 - #125 更改
config()
函數的$default
參數的默認值為null
.
修復
- #110 #111 修復
Redis::select
無法正常切換數據庫的問題 - #131 修復
middlewares
配置在Router::addGroup
下無法正常設置的問題 - #132 修復
request->hasFile
判斷條件錯誤的問題 - #135 修復
response->redirect
在調整外鏈時無法正確生成鏈接的問題 - #139 修復 ConsulAgent 的 URI 無法自定義設置的問題
- #148 修復當
migrates
文件夾不存在時無法生成遷移模板的問題 - #169 修復處理請求時沒法正確處理數組類型的參數
- #170 修復當路由不存在時 WebSocket Server 無法正確捕獲異常的問題
移除
- #131 移除
Router
options
裏的server
參數
v1.0.3 - 2019-07-02
新增
- #48 增加 WebSocket 協程客户端及服務端
- #51 增加了
enableCache
參數去控制DefinitionSource
是否啟用註解掃描緩存 - #61 通過
db:model
命令創建模型時增加屬性類型 - #65 模型緩存增加 JSON 格式支持
變更
- #46 移除了
hyperf/di
,hyperf/command
andhyperf/dispatcher
組件對hyperf/framework
組件的依賴
修復
- #45 修復當引用了
hyperf/websocket-server
組件時有可能會導致 HTTP Server 啟動失敗的問題 - #55 修復方法級別的
@Middleware
註解可能會被覆蓋的問題 - #73 修復
db:model
命令對短屬性處理不正確的問題 - #88 修復當控制器存在多層文件夾時生成的路由可能不正確的問題
- #101 修復常量不存在
@Message
註解時會報錯的問題
v1.0.2 - 2019-06-25
新增
修復
- 修復了 HTTP Server 會被 WebSocket Server 影響的問題(WebSocket Server 尚未發佈);
- 修復了代理類部分註解沒有生成的問題;
- 修復了數據庫連接池在單測環境下會無法獲取連接的問題;
- 修復了 co-phpunit 在某些情況下不能按預期運行的問題;
- 修復了模型事件
creating
,updating
... 運行與預期不一致的問題; - 修復了
flushContext
方法在單測環境下不能按預期運行的問題;