案例DEMO

下面我们就来看下系统自带的案例注解标签@Test,是如何实现的吧。
1、首先,我们先在/other/annotation/目录下,声明一个Test.php文件,并写入以下代码:

<?php
namespace other\annotation;
use \x\doc\lable\Basics;

class Test extends Basics
{
    /**
        * 启动项
        * @todo 无
        * @author 小黄牛
        * @version v1.2.10 + 2020.07.30
        * @deprecated 暂不启用
        * @global 无
        * @param array $route 路由参数
        * @param type int 路由类型 1.控制器注解 2.操作方法注解
        * @return bool 返回true表示继续向下执行
    */
    public function run($route, $type){
        // $route是多维数组
        // 当同一注释中,多次声明同一个注解时,只会回调一次,多次参数分别存放在该数组中
        var_dump($route);
        var_dump($type);

        // return route_error函数抛出自定义错误异常
        return $this->route_error('Msg内容自己随便写啦');

        // 若注解通过,应该调用_return()函数,代替return true;
        return $this->_return();
    }
}

2、然后,我们就可以选择一个控制器类,进行注解元挂载测试了:

<?php
namespace app\controller;
use x\Controller;

/**
 * @Test(msg="我是自定义的注解1")
 * @Test(msg="我是自定义的注解2")
 * @Test(msg="我是自定义的注解3")
 * @Controller(prefix="")
*/
class Index extends Controller
{
    /**
     * @Test(msg="我是自定义的注解1")
     * @Test(msg="我是自定义的注解2")
     * @Test(msg="我是自定义的注解3")
     * @RequestMapping(route="/", method="get", title="主页")
    */
    public function index() {
        return $this->fetch('我是主页');
    }

}

重启服务之后,我们访问该路由地址,就能在XShell里查看对应的注解参数,在浏览器中可以查看到生命周期回调的处理信息。