注解是 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;}
调用注解
<?phpdeclare(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';}
}