悠悠楠杉
网站页面
request()->controller();
request()->action();
/**
* 获取目录下的php文件名 根据thinkphp文件命名规则可以知道文件名和控制器的名称是一致的
* @param string $dir 控制器目录的路径
* @return array 返回获取的数组形式
*/
function getControllers($dir) {
$pathList = glob($dir . '/*.php');
$res = [];
foreach($pathList as $key => $value) {
$res[] = basename($value, '.php');
}
return $res;
}
$controllers = getControllers('../app/admin/controller');
/**
* 获取控制器的方法名的函数 此方法过滤父级Base控制器的方法,只保留自己的
* @param string $className 控制器路径
* @param string $base 过滤父级Base控制器
* @return type description
*/
function getActions($className, $base='\app\admin\controller\Base') {
$methods = get_class_methods(new $className());
$baseMethods = get_class_methods(new $base());
$res = array_diff($methods, $baseMethods);
return $res;
}
获取指定控制器中的方法
$control = 'Index';
$actions = getActions('app\admin\controller' . '\\' . $control);
获取所有控制器中的方法
$controllers = getControllers('../app/admin/controller');
$actions = [];
foreach( $controllers as $key=>$value) {
$actions[$value] = get_class_methods('app\admin\controller' . '\\' . $value);
}
var_dump($actions);