注解支持范围

由于注解是基于路由表实现的依赖注入,所以注解只对路由加载的主控制器方法有效,当再主方法内调用其他成员方法,又或者跨控制器调用它类方法时,依旧只有主控制器的注解有效。

下面我们用一个HTTP的控制器来讲解下:

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

class Index extends Controller
{
    /**
     * 输出视图
     * @RequestMapping(route="/", method="get", title="主页")
    */
    public function index() {
        $Db = $this->test();
    }

    /**
     * @Ioc(class="\x\Db", name="Db")
     * @RequestMapping(route="/test", method="post", title="测试获取")
    */
    public function test() {
        var_dump($this->Db);
        return $this->Db;
    }
}

上面的方法,在我们访问/test路由的时候,Db属性是注入成功的,但当我们访问/路由的时候就会发现,test()方法是错误的,因为注解没有被继承,所以Ioc实际上并没有执行。

SW-X的注解,只对被路由器载入的控制器主方法有效。

当然,调用流程上,主方法挂载的注解,其流程上调用到的后续方法都可以使用。