注解是 Hyperf 非常强大的一项功能,可以通过注解的形式减少很多的配置,以及实现很多非常方便的功能。
结构

建立注解
-
在
app下建立Annotation注解文件夹 -
在
Annotation下建立Jim.php注解
下面的的@Annotation 和 @Target是全局注解,所以不需要use 引入
注解一共有 3 种应用对象,分别是 类、类方法 和 类属性
@Target()有三种方式 分别是 ALL 全部,CLASS 类,METHOD方法,PROPERTY属性
必须继承AbstractAnnotation 类 use Hyperf\Di\Annotation\AbstractAnnotation;
<?php
/**
* Jim.php
*
* Created on 2024-08-22-10:35
* Created by xxp 332410549@qq.com
*/
namespace App\Annotation;
use Hyperf\Di\Annotation\AbstractAnnotation;
/**
* @Annotation
* @Target({"ALL"})
*/
class Jim extends AbstractAnnotation
{
/**
* @var string
*/
public $name = "";
/**
* @var int
*/
public $age = 0;
}
调用注解
<?php
declare(strict_types=1);
namespace App\Controller;
use App\Annotation\Jim;
use Hyperf\Di\Annotation\AnnotationCollector;
use Hyperf\HttpServer\Annotation\AutoController;
/**
* @AutoController(prefix="user")
* @Jim(name="nico",age="18")
*/
class UserController extends AbstractController
{
public function index()
{
var_dump(AnnotationCollector::getClassesByAnnotation(Jim::class));
return 'user';
}
}
结果




















