注解是 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';
}
}