diff --git a/CHANGELOG-2.1.md b/CHANGELOG-2.1.md
index 7f68417b6..67c681efe 100644
--- a/CHANGELOG-2.1.md
+++ b/CHANGELOG-2.1.md
@@ -1,4 +1,6 @@
-# v2.1.11 - TBD
+# v2.1.12 - TBD
+
+# v2.1.11 - 2021-03-22
## Added
diff --git a/docs/zh-cn/changelog.md b/docs/zh-cn/changelog.md
index 4e1dee1c7..699ac6a46 100644
--- a/docs/zh-cn/changelog.md
+++ b/docs/zh-cn/changelog.md
@@ -1,5 +1,19 @@
# 版本更新记录
+# v2.1.11 - 2021-03-22
+
+## 新增
+
+- [#3376](https://github.com/hyperf/hyperf/pull/3376) 为注解 `Hyperf\DbConnection\Annotation\Transactional` 增加参数 `$connection` 和 `$attempts`,用户可以按需设置事务连接和重试次数。
+- [#3403](https://github.com/hyperf/hyperf/pull/3403) 新增方法 `Hyperf\Testing\Client::sendRequest()`,用户可以使用自己构造的 `ServerRequest`,比如设置 `Cookies`。
+
+## 修复
+
+- [#3380](https://github.com/hyperf/hyperf/pull/3380) 修复超全局变量,在协程上下文里没有 `Request` 对象时,无法正常工作的问题。
+- [#3394](https://github.com/hyperf/hyperf/pull/3394) 修复使用 `@Inject` 注入的对象,会被 `trait` 中注入的对象覆盖的问题。
+- [#3395](https://github.com/hyperf/hyperf/pull/3395) 修复当继承使用 `@Inject` 注入私有变量的父类时,而导致子类实例化报错的问题。
+- [#3398](https://github.com/hyperf/hyperf/pull/3398) 修复单元测试中使用 `UploadedFile::isValid()` 时,无法正确判断结果的问题。
+
# v2.1.10 - 2021-03-15
## 修复
diff --git a/docs/zh-hk/changelog.md b/docs/zh-hk/changelog.md
index 123beea28..843a8d8b2 100644
--- a/docs/zh-hk/changelog.md
+++ b/docs/zh-hk/changelog.md
@@ -1,5 +1,19 @@
# 版本更新記錄
+# v2.1.11 - 2021-03-22
+
+## 新增
+
+- [#3376](https://github.com/hyperf/hyperf/pull/3376) 為註解 `Hyperf\DbConnection\Annotation\Transactional` 增加參數 `$connection` 和 `$attempts`,用户可以按需設置事務連接和重試次數。
+- [#3403](https://github.com/hyperf/hyperf/pull/3403) 新增方法 `Hyperf\Testing\Client::sendRequest()`,用户可以使用自己構造的 `ServerRequest`,比如設置 `Cookies`。
+
+## 修復
+
+- [#3380](https://github.com/hyperf/hyperf/pull/3380) 修復超全局變量,在協程上下文裏沒有 `Request` 對象時,無法正常工作的問題。
+- [#3394](https://github.com/hyperf/hyperf/pull/3394) 修復使用 `@Inject` 注入的對象,會被 `trait` 中注入的對象覆蓋的問題。
+- [#3395](https://github.com/hyperf/hyperf/pull/3395) 修復當繼承使用 `@Inject` 注入私有變量的父類時,而導致子類實例化報錯的問題。
+- [#3398](https://github.com/hyperf/hyperf/pull/3398) 修復單元測試中使用 `UploadedFile::isValid()` 時,無法正確判斷結果的問題。
+
# v2.1.10 - 2021-03-15
## 修復
diff --git a/docs/zh-hk/di.md b/docs/zh-hk/di.md
index 2b9d650fc..a64b0fffd 100644
--- a/docs/zh-hk/di.md
+++ b/docs/zh-hk/di.md
@@ -3,7 +3,9 @@
## 簡介
Hyperf 默認採用 [hyperf/di](https://github.com/hyperf/di) 作為框架的依賴注入管理容器,儘管從設計上我們允許您更換其它的依賴注入管理容器,但我們強烈不建議您更換該組件。
-[hyperf/di](https://github.com/hyperf/di) 是一個強大的用於管理類的依賴關係並完成自動注入的組件,與傳統依賴注入容器的區別在於更符合長生命週期的應用使用、提供了 [註解及註解注入](zh-hk/annotation.md) 的支持、提供了無比強大的 [AOP 面向切面編程](zh-hk/aop.md) 能力,這些能力及易用性作為 Hyperf 的核心輸出,我們自信的認為該組件是最優秀的。
+[hyperf/di](https://github.com/hyperf/di)
+是一個強大的用於管理類的依賴關係並完成自動注入的組件,與傳統依賴注入容器的區別在於更符合長生命週期的應用使用、提供了 [註解及註解注入](zh-hk/annotation.md)
+的支持、提供了無比強大的 [AOP 面向切面編程](zh-hk/aop.md) 能力,這些能力及易用性作為 Hyperf 的核心輸出,我們自信的認為該組件是最優秀的。
## 安裝
@@ -19,6 +21,7 @@ composer require hyperf/di
通常來説,類的關係及注入是無需顯性定義的,這一切 Hyperf 都會默默的為您完成,我們通過一些代碼示例來説明一下相關的用法。
假設我們需要在 `IndexController` 內調用 `UserService` 類的 `getInfoById(int $id)` 方法。
+
```php
注意使用構造函數注入時,調用方也就是 `IndexController` 必須是由 DI 創建的對象才能完成自動注入,而 Controller 默認是由 DI 創建的,所以可以直接使用構造函數注入
-當您希望定義一個可選的依賴項時,可以通過給參數定義為 `nullable` 或將參數的默認值定義為 `null`,即表示該參數如果在 DI 容器中沒有找到或無法創建對應的對象時,不拋出異常而是直接使用 `null` 來注入。*(該功能僅在 1.1.0 或更高版本可用)*
+當您希望定義一個可選的依賴項時,可以通過給參數定義為 `nullable` 或將參數的默認值定義為 `null`,即表示該參數如果在 DI 容器中沒有找到或無法創建對應的對象時,不拋出異常而是直接使用 `null` 來注入。*(該功能僅在
+1.1.0 或更高版本可用)*
```php
someProperty);
unset($proxy->someProperty);
```
-## 注意事項
-
-### 容器僅管理長生命週期的對象
-
-換種方式理解就是容器內管理的對象**都是單例**,這樣的設計對於長生命週期的應用來説會更加的高效,減少了大量無意義的對象創建和銷燬,這樣的設計也就意味着所有需要交由 DI 容器管理的對象**均不能包含** `狀態` 值。
-`狀態` 可直接理解為會隨着請求而變化的值,事實上在 [協程](zh-hk/coroutine.md) 編程中,這些狀態值也是應該存放於 `協程上下文` 中的,即 `Hyperf\Utils\Context`。
-
## 短生命週期對象
-通過 `new` 關鍵詞創建的對象毫無疑問的短生命週期的,那麼如果希望創建一個短生命週期的對象但又希望使用 `構造函數依賴自動注入功能` 呢?這時我們可以通過 `make(string $name, array $parameters = [])` 函數來創建 `$name` 對應的的實例,代碼示例如下:
+通過 `new` 關鍵詞創建的對象毫無疑問的短生命週期的,那麼如果希望創建一個短生命週期的對象但又希望使用 `構造函數依賴自動注入功能`
+呢?這時我們可以通過 `make(string $name, array $parameters = [])` 函數來創建 `$name` 對應的的實例,代碼示例如下:
```php
$userService = make(UserService::class, ['enableCache' => true]);
@@ -394,7 +395,9 @@ $userService = make(UserService::class, ['enableCache' => true]);
## 獲取容器對象
-有些時候我們可能希望去實現一些更動態的需求時,會希望可以直接獲取到 `容器(Container)` 對象,在絕大部分情況下,框架的入口類(比如命令類、控制器、RPC 服務提供者等)都是由 `容器(Container)` 創建並維護的,也就意味着您所寫的絕大部分業務代碼都是在 `容器(Container)` 的管理作用之下的,也就意味着在絕大部分情況下您都可以通過在 `構造函數(Constructor)` 聲明或通過 `@Inject` 註解注入 `Psr\Container\ContainerInterface` 接口類都能夠獲得 `Hyperf\Di\Container` 容器對象,我們通過代碼來演示一下:
+有些時候我們可能希望去實現一些更動態的需求時,會希望可以直接獲取到 `容器(Container)` 對象,在絕大部分情況下,框架的入口類(比如命令類、控制器、RPC 服務提供者等)都是由 `容器(Container)`
+創建並維護的,也就意味着您所寫的絕大部分業務代碼都是在 `容器(Container)` 的管理作用之下的,也就意味着在絕大部分情況下您都可以通過在 `構造函數(Constructor)` 聲明或通過 `@Inject`
+註解注入 `Psr\Container\ContainerInterface` 接口類都能夠獲得 `Hyperf\Di\Container` 容器對象,我們通過代碼來演示一下:
```php
+
+
+
+ ./test
+
+
+
+ // 需要生成單元測試覆蓋率的文件
+
+ ./app
+
+
+
+
+
+
+
+
+```
+
+
+執行以下命令
+
+```shell
+phpdbg -dmemory_limit=1024M -qrr ./vendor/bin/co-phpunit -c phpunit.xml --colors=always
+```
+
+
+
diff --git a/docs/zh-tw/changelog.md b/docs/zh-tw/changelog.md
index a571d5896..aa092af8e 100644
--- a/docs/zh-tw/changelog.md
+++ b/docs/zh-tw/changelog.md
@@ -1,5 +1,19 @@
# 版本更新記錄
+# v2.1.11 - 2021-03-22
+
+## 新增
+
+- [#3376](https://github.com/hyperf/hyperf/pull/3376) 為註解 `Hyperf\DbConnection\Annotation\Transactional` 增加引數 `$connection` 和 `$attempts`,使用者可以按需設定事務連線和重試次數。
+- [#3403](https://github.com/hyperf/hyperf/pull/3403) 新增方法 `Hyperf\Testing\Client::sendRequest()`,使用者可以使用自己構造的 `ServerRequest`,比如設定 `Cookies`。
+
+## 修復
+
+- [#3380](https://github.com/hyperf/hyperf/pull/3380) 修復超全域性變數,在協程上下文裡沒有 `Request` 物件時,無法正常工作的問題。
+- [#3394](https://github.com/hyperf/hyperf/pull/3394) 修復使用 `@Inject` 注入的物件,會被 `trait` 中注入的物件覆蓋的問題。
+- [#3395](https://github.com/hyperf/hyperf/pull/3395) 修復當繼承使用 `@Inject` 注入私有變數的父類時,而導致子類例項化報錯的問題。
+- [#3398](https://github.com/hyperf/hyperf/pull/3398) 修復單元測試中使用 `UploadedFile::isValid()` 時,無法正確判斷結果的問題。
+
# v2.1.10 - 2021-03-15
## 修復
diff --git a/docs/zh-tw/di.md b/docs/zh-tw/di.md
index 86f368f01..754fd88fa 100644
--- a/docs/zh-tw/di.md
+++ b/docs/zh-tw/di.md
@@ -3,7 +3,9 @@
## 簡介
Hyperf 預設採用 [hyperf/di](https://github.com/hyperf/di) 作為框架的依賴注入管理容器,儘管從設計上我們允許您更換其它的依賴注入管理容器,但我們強烈不建議您更換該元件。
-[hyperf/di](https://github.com/hyperf/di) 是一個強大的用於管理類的依賴關係並完成自動注入的元件,與傳統依賴注入容器的區別在於更符合長生命週期的應用使用、提供了 [註解及註解注入](zh-tw/annotation.md) 的支援、提供了無比強大的 [AOP 面向切面程式設計](zh-tw/aop.md) 能力,這些能力及易用性作為 Hyperf 的核心輸出,我們自信的認為該元件是最優秀的。
+[hyperf/di](https://github.com/hyperf/di)
+是一個強大的用於管理類的依賴關係並完成自動注入的元件,與傳統依賴注入容器的區別在於更符合長生命週期的應用使用、提供了 [註解及註解注入](zh-tw/annotation.md)
+的支援、提供了無比強大的 [AOP 面向切面程式設計](zh-tw/aop.md) 能力,這些能力及易用性作為 Hyperf 的核心輸出,我們自信的認為該元件是最優秀的。
## 安裝
@@ -19,6 +21,7 @@ composer require hyperf/di
通常來說,類的關係及注入是無需顯性定義的,這一切 Hyperf 都會默默的為您完成,我們通過一些程式碼示例來說明一下相關的用法。
假設我們需要在 `IndexController` 內呼叫 `UserService` 類的 `getInfoById(int $id)` 方法。
+
```php
注意使用建構函式注入時,呼叫方也就是 `IndexController` 必須是由 DI 建立的物件才能完成自動注入,而 Controller 預設是由 DI 建立的,所以可以直接使用建構函式注入
-當您希望定義一個可選的依賴項時,可以通過給引數定義為 `nullable` 或將引數的預設值定義為 `null`,即表示該引數如果在 DI 容器中沒有找到或無法建立對應的物件時,不丟擲異常而是直接使用 `null` 來注入。*(該功能僅在 1.1.0 或更高版本可用)*
+當您希望定義一個可選的依賴項時,可以通過給引數定義為 `nullable` 或將引數的預設值定義為 `null`,即表示該引數如果在 DI 容器中沒有找到或無法建立對應的物件時,不丟擲異常而是直接使用 `null` 來注入。*(該功能僅在
+1.1.0 或更高版本可用)*
```php
someProperty);
unset($proxy->someProperty);
```
-## 注意事項
-
-### 容器僅管理長生命週期的物件
-
-換種方式理解就是容器內管理的物件**都是單例**,這樣的設計對於長生命週期的應用來說會更加的高效,減少了大量無意義的物件建立和銷燬,這樣的設計也就意味著所有需要交由 DI 容器管理的物件**均不能包含** `狀態` 值。
-`狀態` 可直接理解為會隨著請求而變化的值,事實上在 [協程](zh-tw/coroutine.md) 程式設計中,這些狀態值也是應該存放於 `協程上下文` 中的,即 `Hyperf\Utils\Context`。
-
## 短生命週期物件
-通過 `new` 關鍵詞建立的物件毫無疑問的短生命週期的,那麼如果希望建立一個短生命週期的物件但又希望使用 `建構函式依賴自動注入功能` 呢?這時我們可以通過 `make(string $name, array $parameters = [])` 函式來建立 `$name` 對應的的例項,程式碼示例如下:
+通過 `new` 關鍵詞建立的物件毫無疑問的短生命週期的,那麼如果希望建立一個短生命週期的物件但又希望使用 `建構函式依賴自動注入功能`
+呢?這時我們可以通過 `make(string $name, array $parameters = [])` 函式來建立 `$name` 對應的的例項,程式碼示例如下:
```php
$userService = make(UserService::class, ['enableCache' => true]);
@@ -394,7 +395,9 @@ $userService = make(UserService::class, ['enableCache' => true]);
## 獲取容器物件
-有些時候我們可能希望去實現一些更動態的需求時,會希望可以直接獲取到 `容器(Container)` 物件,在絕大部分情況下,框架的入口類(比如命令類、控制器、RPC 服務提供者等)都是由 `容器(Container)` 建立並維護的,也就意味著您所寫的絕大部分業務程式碼都是在 `容器(Container)` 的管理作用之下的,也就意味著在絕大部分情況下您都可以通過在 `建構函式(Constructor)` 宣告或通過 `@Inject` 註解注入 `Psr\Container\ContainerInterface` 介面類都能夠獲得 `Hyperf\Di\Container` 容器物件,我們通過程式碼來演示一下:
+有些時候我們可能希望去實現一些更動態的需求時,會希望可以直接獲取到 `容器(Container)` 物件,在絕大部分情況下,框架的入口類(比如命令類、控制器、RPC 服務提供者等)都是由 `容器(Container)`
+建立並維護的,也就意味著您所寫的絕大部分業務程式碼都是在 `容器(Container)` 的管理作用之下的,也就意味著在絕大部分情況下您都可以通過在 `建構函式(Constructor)` 宣告或通過 `@Inject`
+註解注入 `Psr\Container\ContainerInterface` 介面類都能夠獲得 `Hyperf\Di\Container` 容器物件,我們通過程式碼來演示一下:
```php
+
+
+
+ ./test
+
+
+
+ // 需要生成單元測試覆蓋率的檔案
+
+ ./app
+
+
+
+
+
+
+
+
+```
+
+
+執行以下命令
+
+```shell
+phpdbg -dmemory_limit=1024M -qrr ./vendor/bin/co-phpunit -c phpunit.xml --colors=always
+```
+
+
+