Translate doc

This commit is contained in:
huangzhhui 2020-06-28 00:26:45 +08:00
parent 1b4511dfd9
commit 323d4a111f
10 changed files with 172 additions and 18 deletions

View File

@ -5,7 +5,7 @@
## 如何提交我的組件?
如果您開發的協程組件適配了 Hyperf那麼您可以直接對 [hyperf/hyperf](https://github.com/hyperf/hyperf) 項目的 `master` 分支發起您的 `Pull Request`,也就是更改當前頁`(./zh-cn/awesome-components.md)`。
如果您開發的協程組件適配了 Hyperf那麼您可以直接對 [hyperf/hyperf](https://github.com/hyperf/hyperf) 項目的 `master` 分支發起您的 `Pull Request`,也就是更改當前頁`(zh-cn/awesome-components.md)`。
## 如何適配 Hyperf ?

View File

@ -13,7 +13,7 @@ composer require hyperf/circuit-breaker
## 使用熔斷器
熔斷器的使用十分簡單,只需要加入 `Hyperf\CircuitBreaker\Annotation\CircuitBreaker` 註解,就可以根據規定策略,進行熔斷。
比如我們需要到另外服務中查詢用户列表,用户列表需要關聯很多的表,查詢效率較低,但平常併發量不高的時候,應速度還説得過去。一旦併發量激增,就會導致響應速度變慢,並會使對方服務出現慢查。這個時候,我們只需要配置一下熔斷超時時間 `timeout` 為 0.05 秒,失敗計數 `failCounter` 超過 1 次後熔斷,相應 `fallback``App\Service\UserService` 類的 `searchFallback` 方法。這樣當響應超時並觸發熔斷後,就不會再請求對端的服務了,而是直接將服務降級從當前項目中返回數據,即根據 `fallback` 指定的方法來進行返回。
比如我們需要到另外服務中查詢用户列表,用户列表需要關聯很多的表,查詢效率較低,但平常併發量不高的時候,應速度還説得過去。一旦併發量激增,就會導致響應速度變慢,並會使對方服務出現慢查。這個時候,我們只需要配置一下熔斷超時時間 `timeout` 為 0.05 秒,失敗計數 `failCounter` 超過 1 次後熔斷,相應 `fallback``App\Service\UserService` 類的 `searchFallback` 方法。這樣當響應超時並觸發熔斷後,就不會再請求對端的服務了,而是直接將服務降級從當前項目中返回數據,即根據 `fallback` 指定的方法來進行返回。
```php
<?php

View File

@ -360,4 +360,80 @@ array(2) {
```
# 運行命令
## 命令行中運行
```bash
php bin/hyperf.php foo
```
## 在 Command 中運行其他命令
```php
<?php
declare(strict_types=1);
namespace App\Command;
use Hyperf\Command\Command as HyperfCommand;
use Hyperf\Command\Annotation\Command;
use Psr\Container\ContainerInterface;
/**
* @Command
*/
class FooCommand extends HyperfCommand
{
/**
* @var ContainerInterface
*/
protected $container;
public function __construct(ContainerInterface $container)
{
$this->container = $container;
parent::__construct('foo');
}
public function configure()
{
parent::configure();
$this->setDescription('foo command');
}
public function handle()
{
$this->call('bar', [
'--foo' => 'foo'
]);
}
}
```
## 在非 Command 中運行命令
```php
$command = 'foo';
$params = ["command" => $command, "--foo" => "foo", "--bar" => "bar"];
// 可以根據自己的需求, 選擇使用的 input/output
$input = new ArrayInput($params);
$output = new NullOutput();
/** @var \Psr\Container\ContainerInterface $container */
$container = \Hyperf\Utils\ApplicationContext::getContainer();
/** @var \Symfony\Component\Console\Application $application */
$application = $container->get(\Hyperf\Contract\ApplicationInterface::class);
$application->setAutoExit(false);
// 這種方式: 不會暴露出命令執行中的異常, 不會阻止程序返回
$exitCode = $application->run($input, $output);
// 第二種方式: 會暴露異常, 需要自己捕捉和處理運行中的異常, 否則會阻止程序的返回
$exitCode = $application->find($command)->run($input, $output);
```

View File

@ -20,7 +20,7 @@ $message = ErrorCode::messages[ErrorCode::SERVER_ERROR] ?? '未知錯誤';
```
但這種實現方式並不友好,每當要查詢錯誤碼與對應錯誤信息時,都要在當前 `Class` 中搜索兩次所以框架提供了基於註解的枚舉類。
但這種實現方式並不友好,每當要查詢錯誤碼與對應錯誤信息時,都要在當前 `Class` 中搜索兩次所以框架提供了基於註解的枚舉類。
## 安裝
@ -32,6 +32,12 @@ composer require hyperf/constants
### 定義枚舉類
通過 `gen:constants` 命令可以快速的生成一個枚舉類。
```bash
php bin/hyperf.php gen:constants ErrorCode
```
```php
<?php
@ -57,7 +63,6 @@ class ErrorCode extends AbstractConstants
*/
const SYSTEM_INVALID = 700;
}
```
用户可以使用 `ErrorCode::getMessage(ErrorCode::SERVER_ERROR)` 來獲取對應錯誤信息。
@ -88,7 +93,6 @@ class BusinessException extends ServerException
parent::__construct($message, $code, $previous);
}
}
```
### 拋出異常
@ -112,7 +116,6 @@ class IndexController extends Controller
throw new BusinessException(ErrorCode::SERVER_ERROR);
}
}
```
### 可變參數
@ -139,7 +142,6 @@ class ErrorCode extends AbstractConstants
$message = ErrorCode::getMessage(ErrorCode::PARAMS_INVALID, ['user_id']);
// 1.2 版本以下 可以使用以下方式,但會在 1.2 版本移除
$message = ErrorCode::getMessage(ErrorCode::PARAMS_INVALID, 'user_id');
```
@ -180,4 +182,3 @@ class ErrorCode extends AbstractConstants
$message = ErrorCode::getMessage(ErrorCode::SERVER_ERROR, ['param' => 'user_id']);
```

View File

@ -35,7 +35,7 @@ composer create-project hyperf/hyperf-skeleton
```
# 下載並運行 hyperf/hyperf 鏡像,並將鏡像內的項目目錄綁定到宿主機的 /tmp/skeleton 目錄
docker run -v /tmp/skeleton:/hyperf-skeleton -p 9501:9501 -it --entrypoint /bin/sh hyperf/hyperf:7.2-alpine-cli
docker run -v /tmp/skeleton:/hyperf-skeleton -p 9501:9501 -it --entrypoint /bin/sh hyperf/hyperf:latest
# 鏡像容器運行後,在容器內安裝 Composer
wget https://github.com/composer/composer/releases/download/1.8.6/composer.phar

View File

@ -5,7 +5,7 @@
## 如何提交我的元件?
如果您開發的協程元件適配了 Hyperf那麼您可以直接對 [hyperf/hyperf](https://github.com/hyperf/hyperf) 專案的 `master` 分支發起您的 `Pull Request`,也就是更改當前頁`(./zh-cn/awesome-components.md)`。
如果您開發的協程元件適配了 Hyperf那麼您可以直接對 [hyperf/hyperf](https://github.com/hyperf/hyperf) 專案的 `master` 分支發起您的 `Pull Request`,也就是更改當前頁`(zh-cn/awesome-components.md)`。
## 如何適配 Hyperf ?

View File

@ -13,7 +13,7 @@ composer require hyperf/circuit-breaker
## 使用熔斷器
熔斷器的使用十分簡單,只需要加入 `Hyperf\CircuitBreaker\Annotation\CircuitBreaker` 註解,就可以根據規定策略,進行熔斷。
比如我們需要到另外服務中查詢使用者列表,使用者列表需要關聯很多的表,查詢效率較低,但平常併發量不高的時候,應速度還說得過去。一旦併發量激增,就會導致響應速度變慢,並會使對方服務出現慢查。這個時候,我們只需要配置一下熔斷超時時間 `timeout` 為 0.05 秒,失敗計數 `failCounter` 超過 1 次後熔斷,相應 `fallback``App\Service\UserService` 類的 `searchFallback` 方法。這樣當響應超時並觸發熔斷後,就不會再請求對端的服務了,而是直接將服務降級從當前專案中返回資料,即根據 `fallback` 指定的方法來進行返回。
比如我們需要到另外服務中查詢使用者列表,使用者列表需要關聯很多的表,查詢效率較低,但平常併發量不高的時候,應速度還說得過去。一旦併發量激增,就會導致響應速度變慢,並會使對方服務出現慢查。這個時候,我們只需要配置一下熔斷超時時間 `timeout` 為 0.05 秒,失敗計數 `failCounter` 超過 1 次後熔斷,相應 `fallback``App\Service\UserService` 類的 `searchFallback` 方法。這樣當響應超時並觸發熔斷後,就不會再請求對端的服務了,而是直接將服務降級從當前專案中返回資料,即根據 `fallback` 指定的方法來進行返回。
```php
<?php

View File

@ -360,4 +360,80 @@ array(2) {
```
# 執行命令
## 命令列中執行
```bash
php bin/hyperf.php foo
```
## 在 Command 中執行其他命令
```php
<?php
declare(strict_types=1);
namespace App\Command;
use Hyperf\Command\Command as HyperfCommand;
use Hyperf\Command\Annotation\Command;
use Psr\Container\ContainerInterface;
/**
* @Command
*/
class FooCommand extends HyperfCommand
{
/**
* @var ContainerInterface
*/
protected $container;
public function __construct(ContainerInterface $container)
{
$this->container = $container;
parent::__construct('foo');
}
public function configure()
{
parent::configure();
$this->setDescription('foo command');
}
public function handle()
{
$this->call('bar', [
'--foo' => 'foo'
]);
}
}
```
## 在非 Command 中執行命令
```php
$command = 'foo';
$params = ["command" => $command, "--foo" => "foo", "--bar" => "bar"];
// 可以根據自己的需求, 選擇使用的 input/output
$input = new ArrayInput($params);
$output = new NullOutput();
/** @var \Psr\Container\ContainerInterface $container */
$container = \Hyperf\Utils\ApplicationContext::getContainer();
/** @var \Symfony\Component\Console\Application $application */
$application = $container->get(\Hyperf\Contract\ApplicationInterface::class);
$application->setAutoExit(false);
// 這種方式: 不會暴露出命令執行中的異常, 不會阻止程式返回
$exitCode = $application->run($input, $output);
// 第二種方式: 會暴露異常, 需要自己捕捉和處理執行中的異常, 否則會阻止程式的返回
$exitCode = $application->find($command)->run($input, $output);
```

View File

@ -20,7 +20,7 @@ $message = ErrorCode::messages[ErrorCode::SERVER_ERROR] ?? '未知錯誤';
```
但這種實現方式並不友好,每當要查詢錯誤碼與對應錯誤資訊時,都要在當前 `Class` 中搜索兩次所以框架提供了基於註解的列舉類。
但這種實現方式並不友好,每當要查詢錯誤碼與對應錯誤資訊時,都要在當前 `Class` 中搜索兩次所以框架提供了基於註解的列舉類。
## 安裝
@ -32,6 +32,12 @@ composer require hyperf/constants
### 定義列舉類
通過 `gen:constants` 命令可以快速的生成一個列舉類。
```bash
php bin/hyperf.php gen:constants ErrorCode
```
```php
<?php
@ -57,7 +63,6 @@ class ErrorCode extends AbstractConstants
*/
const SYSTEM_INVALID = 700;
}
```
使用者可以使用 `ErrorCode::getMessage(ErrorCode::SERVER_ERROR)` 來獲取對應錯誤資訊。
@ -88,7 +93,6 @@ class BusinessException extends ServerException
parent::__construct($message, $code, $previous);
}
}
```
### 丟擲異常
@ -112,7 +116,6 @@ class IndexController extends Controller
throw new BusinessException(ErrorCode::SERVER_ERROR);
}
}
```
### 可變引數
@ -139,7 +142,6 @@ class ErrorCode extends AbstractConstants
$message = ErrorCode::getMessage(ErrorCode::PARAMS_INVALID, ['user_id']);
// 1.2 版本以下 可以使用以下方式,但會在 1.2 版本移除
$message = ErrorCode::getMessage(ErrorCode::PARAMS_INVALID, 'user_id');
```
@ -180,4 +182,3 @@ class ErrorCode extends AbstractConstants
$message = ErrorCode::getMessage(ErrorCode::SERVER_ERROR, ['param' => 'user_id']);
```

View File

@ -35,7 +35,7 @@ composer create-project hyperf/hyperf-skeleton
```
# 下載並執行 hyperf/hyperf 映象,並將映象內的專案目錄繫結到宿主機的 /tmp/skeleton 目錄
docker run -v /tmp/skeleton:/hyperf-skeleton -p 9501:9501 -it --entrypoint /bin/sh hyperf/hyperf:7.2-alpine-cli
docker run -v /tmp/skeleton:/hyperf-skeleton -p 9501:9501 -it --entrypoint /bin/sh hyperf/hyperf:latest
# 映象容器執行後,在容器內安裝 Composer
wget https://github.com/composer/composer/releases/download/1.8.6/composer.phar