[pandaman] 免配置 超简单实用的“aop切面”

wasoncheung

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');
    }
}
473 0 0
0个评论

wasoncheung

1070
积分
0
获赞数
0
粉丝数
2022-11-15 加入
🔝