aop 可以实现不修改原有逻辑的情况下,对功能的扩展。是非常实用的功能。只要经过容器的调用都支持切面 无需配置
class Test
{
// get请求
#[GET]
// 请求映射
#[Rule('/demo')]
// 方法进入前调用 调用参数为callable 支持参数传入
#[BeforeEntering([Test::class, 'beforeEntering'])]
// ..... 更多
// 方法出来后调用
#[AfterComingOut([Test::class, 'afterComingOut'])]
// ...更多
public function index(#[Replica('admin.view')] View $engine): string
{
dump('controller');
return 'controller ok';
}
// 支持依赖注入
public function beforeEntering(): void
{
// 如果这里返回了值,整个调用链将终止 控制器不会执行
dump('beforeEntering');
}
public function afterComingOut(): void
{
// 如果这里返回 false,调用链将终止
dump('afterComingOut');
}
}