数据库 - Model 前置说明
官方开源项目 抓取代理IP

介绍

@Aop*()注解,主要作用是实现AOP切面行为注入。
该注解共分为以下4个注解元支持:

  • @AopBefore():前置注入,会在控制器执行之前触发
  • @AopAfter():后置注入,会在控制器执行return后触发
  • @AopAround():前后置注入,相当于@AopBefore()@AopAfter()两种注解的场景都会触发一次
  • @AopThrows():异常处理,会在控制器逻辑发生错误异常时触发

用法

场景:当需要前置处理某些业务、后置删除某些缓存、局部监听某些控制器异常时使用。
支持:HTTPWebSocketRpc(2.5.2起)Mqtt(2.5.2+)
注解:@AopBefore()@AopAfter()@AopAround()@AopThrows()

参数:

  • class=""

    • 功能:类文件的命名空间地址
    • 值单位:字符串
    • 默认值:无
  • function=""

    • 功能:指定接收的class类对应的方法,该参数为空的时候默认为run
    • 值单位:字符串
    • 默认值:无

使用案例

控制器代码:

<?php
namespace app\http;
use x\controller\Http;

class Index extends Http
{
    /**
     * 注意:同一类的Aop操作,只会生效一个
     * @AopBefore(class="box\aop\Demo", function="before")
     * @AopAfter(class="box\aop\Demo", function="after")
     * @AopAround(class="box\aop\Demo", function="around")
     * @AopThrows(class="box\aop\Demo", function="throws")
    */
    public function index() {
        return $this->fetch('AOP注入测试');
    }

}

box\aop\Demo代码:

namespace box\aop;

class Demo {
    //aop 除了异常通知,其余AOP事件都需要return true程序才会向下执行,否则会抛出异常
    //aop 都需要接收以下参数格式

    // 前置
    public function before() {
        return true;
    }
    // 后置
    public function after() {
        return true;
    }
    // 环绕
    public function around() {
        return true;
    }
    // 异常通知
    public function throws($error) {

    }

}

SW-X建议:所有的AOP类都应该统一存放在/box/aop/目录下,当然这不是强制的。

注意:同一类的Aop操作,只会生效一个。
例如,同时标注两个AopBefore,只有最后一个会生效。

SW-X

企业级 - 高性能 PHP 框架

最后更新:3年前 . 作者-小黄牛

本篇目录