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名称上面@AutoControlleruse Hyperf\HttpServer\Annotation\AutoController;即可实现自动注解。自动注解为绝大多数简单的访问场景提供路由绑定支持,使用@AutoController时则 Hyperf 会自动解析所在类的所有 public 方法并提供 GETPOST 两种请求方式

<?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
posted @ 2024-08-02 00:57  Myifb  阅读(270)  评论(0)    收藏  举报