php 遍历系统中所有控制的方法,遍历所有控制器。

2020-01-01  本文已影响0人  王玉伟的伟
系统中所有控制的方法,遍历所有控制器。
public function getAction()
    {
        //系统中所有控制的方法,遍历所有控制器。
        $pathList = glob('../application/admin/controller/*.php');
        $controllers = [];
        foreach ($pathList as $key => $value) {
            $controllers[] = basename($value, '.php');
        }
        $actions = [];
        foreach ($controllers as $key => $value) {
            $methods = get_class_methods('app\admin\controller' . '\\' . $value);
            $baseMethods = get_class_methods('\app\admin\controller\Base');
            $actions[$value] =  array_diff($methods, $baseMethods);
            array_walk($actions[$value], function (&$v, $k) use ($value) {
                $v = $value . '/' . $v;
            });
        }

        var_dump($actions);
    }
获取某个目录下的php文件名的函数
// 获取某个目录下的php文件名的函数
     private function getControllers($dir)
     {
         $pathList = glob($dir . '/*.php');
         $res = [];
         foreach ($pathList as $key => $value) {
             $res[] = basename($value, '.php');
         }
         return $res;
     }
获取某个控制器的方法名的函数
     //获取某个控制器的方法名的函数
     //此方法过滤父级Base控制器的方法,只保留自己的
     private function getActions($className, $base = '\app\admin\controller\Base')
     {
         $methods = get_class_methods($className);
         $baseMethods = get_class_methods($base);
         $res = array_diff($methods, $baseMethods);
         return $res;
     }
上一篇下一篇

猜你喜欢

热点阅读