mirror of
https://gitee.com/hyperf/hyperf.git
synced 2024-12-12 12:55:29 +08:00
47 KiB
47 KiB
版本更新記錄
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\Context\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"
才能通過檢測了;