Merge remote-tracking branch 'origin/master'

This commit is contained in:
huangzhhui 2020-06-22 10:55:14 +08:00
commit 5ae0c6289d
29 changed files with 39 additions and 34 deletions

View File

@ -1,6 +1,6 @@
# 指南前言
为了帮助开发者更好的为 Hyperf 开发组件,共建生态,我们提供了本指南用于指导开发者进行组件开发,在阅读本指南前,需要您对 Hyperf 的文档进行了 **全面** 的阅读,特别是 [协程](zh/coroutine.md) 和 [依赖注入](zh/di.md) 章节,如果对 Hyperf 的基础组件缺少充分的理解,可能会导致开发时出现错误。
为了帮助开发者更好的为 Hyperf 开发组件,共建生态,我们提供了本指南用于指导开发者进行组件开发,在阅读本指南前,需要您对 Hyperf 的文档进行了 **全面** 的阅读,特别是 [协程](en/coroutine.md) 和 [依赖注入](en/di.md) 章节,如果对 Hyperf 的基础组件缺少充分的理解,可能会导致开发时出现错误。
# 组件开发的目的

View File

@ -1,7 +1,7 @@
# Controller
通过控制器来处理 HTTP 请求,需要通过 `配置文件``注解` 的形式将路由与控制器方法进行绑定,具体请查阅 [路由](zh/route.md) 章节。
对于 `请求(Request)``响应(Response)`Hyperf 提供了 `Hyperf\HttpServer\Contract\RequestInterface``Hyperf\HttpServer\Contract\ResponseInterface` 方便您获取入参和返回数据,关于 [请求](zh/request.md) 与 [响应](zh/response.md) 的详细内容请查阅对应的章节。
通过控制器来处理 HTTP 请求,需要通过 `配置文件``注解` 的形式将路由与控制器方法进行绑定,具体请查阅 [路由](en/route.md) 章节。
对于 `请求(Request)``响应(Response)`Hyperf 提供了 `Hyperf\HttpServer\Contract\RequestInterface``Hyperf\HttpServer\Contract\ResponseInterface` 方便您获取入参和返回数据,关于 [请求](en/request.md) 与 [响应](en/response.md) 的详细内容请查阅对应的章节。
## Create a Controller

View File

@ -4,7 +4,7 @@
# 使用方法
在您通过 [查询构造器](zh/db/querybuilder.md) 或 [模型](zh/db/model.md) 查询数据时,可以通过 `paginate` 方法来处理分页,该方法会自动根据用户正在查看的页面来设置限制和偏移量,默认情况下,通过当前 HTTP 请求所带的 `page` 参数的值来检测当前的页数:
在您通过 [查询构造器](en/db/querybuilder.md) 或 [模型](en/db/model.md) 查询数据时,可以通过 `paginate` 方法来处理分页,该方法会自动根据用户正在查看的页面来设置限制和偏移量,默认情况下,通过当前 HTTP 请求所带的 `page` 参数的值来检测当前的页数:
> 由于 Hyperf 当前并不支持视图,所以分页组件尚未支持对视图的渲染,直接返回分页结果默认会以 application/json 格式输出。
@ -36,4 +36,4 @@ return User::where('gender', 1)->paginate(10);
## 分页器实例方法
这里仅说明分页器在数据库查询上的使用方法,更多关于分页器的细节可阅读 [分页](zh/paginator.md) 章节。
这里仅说明分页器在数据库查询上的使用方法,更多关于分页器的细节可阅读 [分页](en/paginator.md) 章节。

View File

@ -3,7 +3,7 @@
## 简介
Hyperf 默认采用 [hyperf/di](https://github.com/hyperf-cloud/di) 作为框架的依赖注入管理容器,尽管从设计上我们允许您更换其它的依赖注入管理容器,但我们强烈不建议您更换该组件。
[hyperf/di](https://github.com/hyperf-cloud/di) 是一个强大的用于管理类的依赖关并完成自动注入的组件,与传统依赖注入容器的区别在于更符合长生命周期的应用使用、提供了 [注解及注解注入](zh/annotation.md) 的支持、提供了无比强大的 [AOP 面向切面编程](zh/aop.md) 能力,这些能力及易用性作为 Hyperf 的核心输出,我们自信的认为该组件是最优秀的。
[hyperf/di](https://github.com/hyperf-cloud/di) 是一个强大的用于管理类的依赖关并完成自动注入的组件,与传统依赖注入容器的区别在于更符合长生命周期的应用使用、提供了 [注解及注解注入](en/annotation.md) 的支持、提供了无比强大的 [AOP 面向切面编程](en/aop.md) 能力,这些能力及易用性作为 Hyperf 的核心输出,我们自信的认为该组件是最优秀的。
## Installation
@ -169,7 +169,7 @@ class IndexController
### 工厂对象注入
我们假设 `UserService` 的实现会更加复杂一些,在创建 `UserService` 对象时构造函数还需要传递进来一些非直接注入型的参数,假设我们需要从配置中取得一个值,然后 `UserService` 需要根据这个值来决定是否开启缓存模式(顺带一说 Hyperf 提供了更好用的 [模型缓存](zh/db/model-cache.md) 功能)
我们假设 `UserService` 的实现会更加复杂一些,在创建 `UserService` 对象时构造函数还需要传递进来一些非直接注入型的参数,假设我们需要从配置中取得一个值,然后 `UserService` 需要根据这个值来决定是否开启缓存模式(顺带一说 Hyperf 提供了更好用的 [模型缓存](en/db/model-cache.md) 功能)
我们需要创建一个工厂来生成 `UserService` 对象:
@ -239,7 +239,7 @@ return [
### 容器仅管理长生命周期的对象
换种方式理解就是容器内管理的对象**都是单例**,这样的设计对于长生命周期的应用来说会更加的高效,减少了大量无意义的对象创建和销毁,这样的设计也就意味着所有需要交由 DI 容器管理的对象**均不能包含** `状态` 值。
`状态` 可直接理解为会随着请求而变化的值,事实上在 [协程](zh/coroutine.md) 编程中,这些状态值也是应该存放于 `协程上下文` 中的,即 `Hyperf\Utils\Context`
`状态` 可直接理解为会随着请求而变化的值,事实上在 [协程](en/coroutine.md) 编程中,这些状态值也是应该存放于 `协程上下文` 中的,即 `Hyperf\Utils\Context`
## 短生命周期对象

View File

@ -71,7 +71,7 @@ grpc
- gRPC server 服务器配置
`server.php` 文件(参考 [配置](zh/config.md)):
`server.php` 文件(参考 [配置](en/config.md)):
```php
'servers' => [
@ -91,7 +91,7 @@ grpc
- gRPC server 路由配置
`routes.php` 文件(参考 [路由](zh/router.md)):
`routes.php` 文件(参考 [路由](en/router.md)):
```php
Router::addServer('grpc', function () {

View File

@ -173,7 +173,7 @@ class Log
是的, 还是通过强大的 `容器(Container)`.
- 首先, 实现一个 `StdoutLoggerFactory` 类,关于 `Factory` 的用法可在 [依赖注入](zh/di.md) 章节获得更多详细的说明。
- 首先, 实现一个 `StdoutLoggerFactory` 类,关于 `Factory` 的用法可在 [依赖注入](en/di.md) 章节获得更多详细的说明。
```php
<?php

View File

@ -1,7 +1,7 @@
# 分页器
在您需要对数据进行分页处理时,可以借助 [hyperf/paginator](https://github.com/hyperf-cloud/paginator) 组件很方便的解决您的问题,您可对您的数据查询进行一定的封装处理,以便更好的使用分页功能,该组件也可用于其它框架上。
通常情况下,您对分页器的需求可能都是存在于数据库查询上,[hyperf/database](https://github.com/hyperf-cloud/database) 数据库组件已经与分页器组件进行了结合,您可以在进行数据查询时很方便的调用分页器来实现分页,具体可查阅 [数据库模型-分页](zh/db/paginator.md) 章节。
通常情况下,您对分页器的需求可能都是存在于数据库查询上,[hyperf/database](https://github.com/hyperf-cloud/database) 数据库组件已经与分页器组件进行了结合,您可以在进行数据查询时很方便的调用分页器来实现分页,具体可查阅 [数据库模型-分页](en/db/paginator.md) 章节。
# 安装

View File

@ -6,7 +6,7 @@ In order to let you know more about the use of `Hyperf`, this chapter will intro
Hyperf use [nikic/fast-route] (https://github.com/nikic/FastRoute) as the default routing component, so you can easily define your route in `config/routes.php`.
Not only thatHyperf also provides an extremely powerful and convenient "Annotation Routing" feature, for more information on routing, please refer to the [Router] (zh/router.md) section.
Not only thatHyperf also provides an extremely powerful and convenient "Annotation Routing" feature, for more information on routing, please refer to the [Router] (en/router.md) section.
### Define routes by file configuration
@ -36,7 +36,7 @@ Router::addRoute(['GET', 'POST', 'HEAD'], '/multi', [\App\Controller\IndexContro
### Define routes by annotations
`Hyperf` provides an extremely powerful and convenient [annotation] (zh/annotation.md) feature, and there is no doubt that the definition of the route also provides a way to define by annotation. Hyperf provides `@Controller` and `@ AutoController` annotations to define a `Controller`. Here is a brief description. For more details, please refer to the [Routing] (zh/router.md) section.
`Hyperf` provides an extremely powerful and convenient [annotation] (en/annotation.md) feature, and there is no doubt that the definition of the route also provides a way to define by annotation. Hyperf provides `@Controller` and `@ AutoController` annotations to define a `Controller`. Here is a brief description. For more details, please refer to the [Routing] (en/router.md) section.
### Define routes by `@AutoController`
s

View File

@ -71,7 +71,7 @@ class RateLimitController
## 触发限流
当限流被触发时, 默认会抛出 `Hyperf\RateLimit\Exception\RateLimitException` 异常
可以通过[异常处理](zh/exception-handler.md)或者配置 `limitCallback` 限流回调处理。
可以通过[异常处理](en/exception-handler.md)或者配置 `limitCallback` 限流回调处理。
例如:
```php

View File

@ -82,7 +82,7 @@ Router::addGroup('/user/',function (){
### 通过注解定义路由
`Hyperf` 提供了非常便利的 [注解](zh/annotation.md) 路由功能,您可以直接在任意类上通过定义 `@Controller``@AutoController` 注解来完成一个路由的定义。
`Hyperf` 提供了非常便利的 [注解](en/annotation.md) 路由功能,您可以直接在任意类上通过定义 `@Controller``@AutoController` 注解来完成一个路由的定义。
#### `@AutoController` 注解

View File

@ -4,7 +4,7 @@
# 注册服务
注册服务可通过 `@RpcService` 注解对一个类进行定义,即为发布这个服务了,目前 Hyperf 仅适配了 JSON RPC 协议,具体内容也可到 [JSON RPC 服务](./zh/json-rpc.md) 章节了解详情。
注册服务可通过 `@RpcService` 注解对一个类进行定义,即为发布这个服务了,目前 Hyperf 仅适配了 JSON RPC 协议,具体内容也可到 [JSON RPC 服务](./en/json-rpc.md) 章节了解详情。
```php
<?php

View File

@ -90,4 +90,4 @@
* Component Development Guide
* [Introduction](en/component-guide/intro.md)
* [Create a new component](en/zh/component-guide/create.md)
* [Create a new component](en/component-guide/create.md)

View File

@ -60,7 +60,7 @@
'/summary.md': './zh-cn/summary.md'
},
plugins: [
EditOnGithubPlugin.create('https://github.com/hyperf/hyperf/tree/master/doc/')
EditOnGithubPlugin.create('https://github.com/hyperf/hyperf/tree/master/docs/')
],
plantuml: {
skin: 'classic',

View File

@ -5,7 +5,7 @@
## 如何提交我的组件?
如果您开发的协程组件适配了 Hyperf那么您可以直接对 [hyperf/hyperf](https://github.com/hyperf/hyperf) 项目的 `master` 分支发起您的 `Pull Request`,也就是更改当前页`(./doc/zh/awesome-components.md)`。
如果您开发的协程组件适配了 Hyperf那么您可以直接对 [hyperf/hyperf](https://github.com/hyperf/hyperf) 项目的 `master` 分支发起您的 `Pull Request`,也就是更改当前页`(./doc/zh-cn/awesome-components.md)`。
## 如何适配 Hyperf ?
@ -117,6 +117,7 @@
- [mabu233/sdebug](https://github.com/mabu233/sdebug) 用于协助开发与调试,`xdebug`的协程改造版
- [firstphp/wsdebug](https://github.com/lamplife/wsdebug) 通过 `WebSocket` 实时观测异常错误的开发调试组件
- [qbhy/hyperf-multi-env](https://github.com/qbhy/hyperf-multi-env) 支持与 laravel 类似的多 env 配置文件功能,通过 `APP_ENV=testing` 可以加载 `.env.testing` 配置覆盖默认的 `.env`
## 权限认证

View File

@ -317,7 +317,7 @@ class OnMetricFactoryReady implements ListenerInterface
您可以使用 `@Counter(name="stat_name_here")``@Histogram(name="stat_name_here")` 来统计切面的调用次数和运行时间。
关于注解的使用请参阅[注解章节](https://doc.hyperf.io/#/zh/annotation)。
关于注解的使用请参阅[注解章节](zh-cn/annotation)。
### 自定义 Histogram Bucket

View File

@ -8,4 +8,4 @@
## 通过容器获取的类都是单例
通过依赖注入容器获取的都是进程内持久化的,是多个协程共享的,所以不能包含任何的请求唯一的数据或协程唯一的数据,这类型的数据都通过协程上下文去处理,具体请仔细阅读 [依赖注入](./zh/di.md) 和 [协程](./zh/coroutine.md) 章节。
通过依赖注入容器获取的都是进程内持久化的,是多个协程共享的,所以不能包含任何的请求唯一的数据或协程唯一的数据,这类型的数据都通过协程上下文去处理,具体请仔细阅读 [依赖注入](./zh-cn/di.md) 和 [协程](./zh-cn/coroutine.md) 章节。

View File

@ -16,4 +16,4 @@
## 版本迭代周期
Hyperf 采用敏捷开发模式,每周一个迭代计划,并于 `每周的星期四 (UTC/GMT+08:00)` 发布一个版本,通常来说是一个 z 版本的发布,也有可能是一个 y 版本。而对于 x 版本,则会根据实际的研究成果情况而决定具体的迭代计划和时间。
关于 Hyperf 采用的版本规则,请查阅 [版本说明](zh/versions.md) 一章。
关于 Hyperf 采用的版本规则,请查阅 [版本说明](zh-cn/versions.md) 一章。

View File

@ -10,7 +10,7 @@ composer require hyperf/service-governance
# 注册服务
注册服务可通过 `@RpcService` 注解对一个类进行定义,即为发布这个服务了,目前 Hyperf 仅适配了 JSON RPC 协议,具体内容也可到 [JSON RPC 服务](./zh/json-rpc.md) 章节了解详情。
注册服务可通过 `@RpcService` 注解对一个类进行定义,即为发布这个服务了,目前 Hyperf 仅适配了 JSON RPC 协议,具体内容也可到 [JSON RPC 服务](./zh-cn/json-rpc.md) 章节了解详情。
```php
<?php

View File

@ -201,6 +201,8 @@ return [
由于要升级到 2.0 版本的组件,而原来 skeleton 项目默认情况下是依赖 1.1.x 版本的组件的,所以我们需要对依赖的约束条件进行一些调整,将原来所有 Hyperf 组件的依赖 `~1.1.0` 修改为 `~2.0.0`,修改完后需运行 `composer update` 来将依赖项升级到 2.0 版本。
`phpstan/phpstan` 版本依赖修改为 `^0.12`
## 完成升级
至此2.0 版本发升级即已完成,但由于 Hyperf 的各个底层文件都是可以通过 DI 来实现重写的,如您重写了某些本次升级调整到了的框架内部文件,您仍需再根据您的实际情况进行一定的调整。

View File

@ -5,7 +5,7 @@
## 如何提交我的組件?
如果您開發的協程組件適配了 Hyperf那麼您可以直接對 [hyperf/hyperf](https://github.com/hyperf/hyperf) 項目的 `master` 分支發起您的 `Pull Request`,也就是更改當前頁`(./doc/zh/awesome-components.md)`。
如果您開發的協程組件適配了 Hyperf那麼您可以直接對 [hyperf/hyperf](https://github.com/hyperf/hyperf) 項目的 `master` 分支發起您的 `Pull Request`,也就是更改當前頁`(./doc/zh-hk/awesome-components.md)`。
## 如何適配 Hyperf ?
@ -117,6 +117,7 @@
- [mabu233/sdebug](https://github.com/mabu233/sdebug) 用於協助開發與調試,`xdebug`的協程改造版
- [firstphp/wsdebug](https://github.com/lamplife/wsdebug) 通過 `WebSocket` 實時觀測異常錯誤的開發調試組件
- [qbhy/hyperf-multi-env](https://github.com/qbhy/hyperf-multi-env) 支持與 laravel 類似的多 env 配置文件功能,通過 `APP_ENV=testing` 可以加載 `.env.testing` 配置覆蓋默認的 `.env`
## 權限認證

View File

@ -317,7 +317,7 @@ class OnMetricFactoryReady implements ListenerInterface
您可以使用 `@Counter(name="stat_name_here")``@Histogram(name="stat_name_here")` 來統計切面的調用次數和運行時間。
關於註解的使用請參閲[註解章節](https://doc.hyperf.io/#/zh/annotation)。
關於註解的使用請參閲[註解章節](zh-hk/annotation)。
### 自定義 Histogram Bucket

View File

@ -8,4 +8,4 @@
## 通過容器獲取的類都是單例
通過依賴注入容器獲取的都是進程內持久化的,是多個協程共享的,所以不能包含任何的請求唯一的數據或協程唯一的數據,這類型的數據都通過協程上下文去處理,具體請仔細閲讀 [依賴注入](./zh/di.md) 和 [協程](./zh/coroutine.md) 章節。
通過依賴注入容器獲取的都是進程內持久化的,是多個協程共享的,所以不能包含任何的請求唯一的數據或協程唯一的數據,這類型的數據都通過協程上下文去處理,具體請仔細閲讀 [依賴注入](./zh-hk/di.md) 和 [協程](./zh-hk/coroutine.md) 章節。

View File

@ -16,4 +16,4 @@
## 版本迭代週期
Hyperf 採用敏捷開發模式,每週一個迭代計劃,並於 `每週的星期四 (UTC/GMT+08:00)` 發佈一個版本,通常來説是一個 z 版本的發佈,也有可能是一個 y 版本。而對於 x 版本,則會根據實際的研究成果情況而決定具體的迭代計劃和時間。
關於 Hyperf 採用的版本規則,請查閲 [版本説明](zh/versions.md) 一章。
關於 Hyperf 採用的版本規則,請查閲 [版本説明](zh-hk/versions.md) 一章。

View File

@ -10,7 +10,7 @@ composer require hyperf/service-governance
# 註冊服務
註冊服務可通過 `@RpcService` 註解對一個類進行定義,即為發佈這個服務了,目前 Hyperf 僅適配了 JSON RPC 協議,具體內容也可到 [JSON RPC 服務](./zh/json-rpc.md) 章節瞭解詳情。
註冊服務可通過 `@RpcService` 註解對一個類進行定義,即為發佈這個服務了,目前 Hyperf 僅適配了 JSON RPC 協議,具體內容也可到 [JSON RPC 服務](./zh-hk/json-rpc.md) 章節瞭解詳情。
```php
<?php

View File

@ -5,7 +5,7 @@
## 如何提交我的元件?
如果您開發的協程元件適配了 Hyperf那麼您可以直接對 [hyperf/hyperf](https://github.com/hyperf/hyperf) 專案的 `master` 分支發起您的 `Pull Request`,也就是更改當前頁`(./doc/zh/awesome-components.md)`。
如果您開發的協程元件適配了 Hyperf那麼您可以直接對 [hyperf/hyperf](https://github.com/hyperf/hyperf) 專案的 `master` 分支發起您的 `Pull Request`,也就是更改當前頁`(./doc/zh-tw/awesome-components.md)`。
## 如何適配 Hyperf ?
@ -117,6 +117,7 @@
- [mabu233/sdebug](https://github.com/mabu233/sdebug) 用於協助開發與除錯,`xdebug`的協程改造版
- [firstphp/wsdebug](https://github.com/lamplife/wsdebug) 通過 `WebSocket` 實時觀測異常錯誤的開發除錯元件
- [qbhy/hyperf-multi-env](https://github.com/qbhy/hyperf-multi-env) 支持與 laravel 類似的多 env 配置文件功能,通過 `APP_ENV=testing` 可以加載 `.env.testing` 配置覆蓋默認的 `.env`
## 許可權認證

View File

@ -317,7 +317,7 @@ class OnMetricFactoryReady implements ListenerInterface
您可以使用 `@Counter(name="stat_name_here")``@Histogram(name="stat_name_here")` 來統計切面的呼叫次數和執行時間。
關於註解的使用請參閱[註解章節](https://doc.hyperf.io/#/zh/annotation)。
關於註解的使用請參閱[註解章節](zh-tw/annotation)。
### 自定義 Histogram Bucket

View File

@ -8,4 +8,4 @@
## 通過容器獲取的類都是單例
通過依賴注入容器獲取的都是程序內持久化的,是多個協程共享的,所以不能包含任何的請求唯一的資料或協程唯一的資料,這型別的資料都通過協程上下文去處理,具體請仔細閱讀 [依賴注入](./zh/di.md) 和 [協程](./zh/coroutine.md) 章節。
通過依賴注入容器獲取的都是程序內持久化的,是多個協程共享的,所以不能包含任何的請求唯一的資料或協程唯一的資料,這型別的資料都通過協程上下文去處理,具體請仔細閱讀 [依賴注入](./zh-tw/di.md) 和 [協程](./zh-tw/coroutine.md) 章節。

View File

@ -16,4 +16,4 @@
## 版本迭代週期
Hyperf 採用敏捷開發模式,每週一個迭代計劃,並於 `每週的星期四 (UTC/GMT+08:00)` 釋出一個版本,通常來說是一個 z 版本的釋出,也有可能是一個 y 版本。而對於 x 版本,則會根據實際的研究成果情況而決定具體的迭代計劃和時間。
關於 Hyperf 採用的版本規則,請查閱 [版本說明](zh/versions.md) 一章。
關於 Hyperf 採用的版本規則,請查閱 [版本說明](zh-tw/versions.md) 一章。

View File

@ -10,7 +10,7 @@ composer require hyperf/service-governance
# 註冊服務
註冊服務可通過 `@RpcService` 註解對一個類進行定義,即為釋出這個服務了,目前 Hyperf 僅適配了 JSON RPC 協議,具體內容也可到 [JSON RPC 服務](./zh/json-rpc.md) 章節瞭解詳情。
註冊服務可通過 `@RpcService` 註解對一個類進行定義,即為釋出這個服務了,目前 Hyperf 僅適配了 JSON RPC 協議,具體內容也可到 [JSON RPC 服務](./zh-tw/json-rpc.md) 章節瞭解詳情。
```php
<?php