Hyperf - 自动注解
Hyperf 提供了极其强大和方便灵活的 注解 功能,在路由的定义上也毫无疑问地提供了注解定义的方式,Hyperf 提供了 #[Controller] 和 #[AutoController] 两种注解来定义一个 Controller
详情查看官方文档
注:
- 在shell中使用
php bin/hyperf.php describe:routes即可查看项目路由列表- PHP 8.0及以上版本:在PHP
8.0及以上版本中,你可以使用属性语法(#[AutoController])- PHP 7.x版本:在PHP
7.x版本中,你需要使用传统的注解语法(@AutoController)- 仅控制器类中的公共(
public)方法会生成路由规则,protected以及private不会
在Controller名称上面@AutoController并use Hyperf\HttpServer\Annotation\AutoController;即可实现自动注解。自动注解为绝大多数简单的访问场景提供路由绑定支持,使用@AutoController时则 Hyperf 会自动解析所在类的所有 public 方法并提供 GET 和 POST 两种请求方式
<?php
declare(strict_types=1);
namespace App\Adminv1\Controller;
use Hyperf\HttpServer\Contract\RequestInterface;
use Hyperf\HttpServer\Annotation\AutoController;
/**
* @AutoController()
*/
class UserController
{
public function test(RequestInterface $request)
{
$user = $request->input('user', 'Hyperf');
$method = $request->getMethod();
return [
'method' => $method,
'message' => "Hello {$user}.嘿嘿嘿",
];
}
}
驼峰命名的控制器,会自动转化为蛇形路由,以下为控制器与实际路由的对应关系示例:
| 控制器 | 注解 | 访问路由 |
|---|---|---|
| MyDataController | @AutoController() | /my_data/index |
| MydataController | @AutoController() | /mydata/index |
| MyDataController | @AutoController(prefix="/admin/data") | /admin/data/index |

浙公网安备 33010602011771号