xjcallen 2018-10-07 11:25:27 322次浏览 2条回复 1 0 0

YII admin 是怎么分析出全站的路由节点的,是什么原理呀?

  • 回复于 2018-10-08 09:43

    反射

    1 条回复
    回复于 2018-10-08 15:47

    怎么理解?

  • 回复于 2018-10-11 14:16

    你找一下 mdm\admin\models\Route 类下的 getAppRoutes 方法,看一下就知道了
    controller是通过遍历目录控制器目录找到的
    action是通过控制器的反射类找到的

    $class = new \ReflectionClass($controller);
    foreach ($class->getMethods() as $method) {
        $name = $method->getName();
        if ($method->isPublic() && !$method->isStatic() && strpos($name, 'action') === 0 && $name !== 'actions') {
            $name = strtolower(preg_replace('/(?<![A-Z])[A-Z]/', ' \0', substr($name, 6)));
            $id = $prefix . ltrim(str_replace(' ', '-', $name), '-');
            $result[$id] = $id;
        }
    }
    
    觉得很赞
您需要登录后才可以回复。登录 | 立即注册