<?php
//JSRUN引擎2.0,支持多达30种语言在线运行,全仿真在线交互输入输出。
declare(strict_types=1);
// 首先,我们需要定义注解,注解本身只是一个原生的 PHP 类,并且自身被打上了注解的注释
#[Attribute]
class ApplyMiddleware
{
public array $middlware = [];
public function __construct(...$middleware)
{
$this->middleware = $middleware;
}
}
// 下面的语法会添加上述注解到 MyController 类,并且传入 auth 作为参数
#[ApplyMiddleware('auth', 'gzy')]
class MyController
{
public function index()
{
}
}
// 然后我们就可以在类中使用反射获取所有的 ApplyMiddleware 注解并读取给定的中间件参数
$reflectionClass = new ReflectionClass(MyController::class);
$attributes = $reflectionClass->getAttributes(ApplyMiddleware::class);
foreach ($attributes as $attribute) {
$middlewareAttribute = $attribute->newInstance();
var_dump($middlewareAttribute->middleware);
}
exit;