如何正确的使用hyperf注解?

在 Hyperf 框架中,可以使用 PHP 8 新特性中的 Attribute 来定义注解,具体的步骤如下:

1.定义注解类,继承 Attribute 类,并添加类中需要的属性和方法。例如:

<?php
use Attribute;
#[Attribute(Attribute::TARGET_CLASS)]
class MyAnnotation
{
    public function __construct(string $name)
    {
        $this->name = $name;
    }
    public string $name;
}

2.在需要使用注解的类或方法上添加注解。例如:

<?php
#[MyAnnotation(name: 'example')]
class MyController extends AbstractController
{
    #[MyAnnotation(name: 'index')]
    public function index()
    {
        // ...
    }
}

3.在使用 ReflectionClass 或 ReflectionMethod 获取类或方法时,可以使用 getAttributes 方法获取对应的注解。例如:

<?php
//....
$refClass = new ReflectionClass(MyController::class);
$annotation = $refClass->getAttributes(MyAnnotation::class)[0]->newInstance();
$refMethod = new ReflectionMethod(MyController::class, 'index');
$annotation = $refMethod->getAttributes(MyAnnotation::class)[0]->newInstance();

以上就是在 Hyperf 框架中正确地定义注解的方法。使用 Attribute 类来定义注解可以使代码更加简洁,而且不需要依赖第三方插件,能够更好地支持 PHP 8。

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注