如果你对该文章中的内容有疑问/不解,可以点击此处链接提问
要注明问题和此文章链接地址 点击此处跳转
方法
/**
*获取某个目录下的php文件名的函数
*/
function getControllers($dir) {
$pathList = glob($dir . '/*.php');
$res = [];
foreach($pathList as $key => $value) {
$res[] = basename($value, '.php');
}
return $res;
}
/**
*获取某个控制器的方法名的函数
*此方法过滤父级Base控制器的方法,只保留自己的
*/
function getActions($className, $base='\app\admin\controller\Admin') {
$methods = get_class_methods(new $className());//当前控制器方法
$baseMethods = get_class_methods(new $base());//通用方法
$res = array_diff($methods, $baseMethods);
return $res;
}
代码
public function ceshi()
{
//获取所有控制器
$controllers = getControllers('../application/admin/controller');
//结果:
// array (size=13)
// 0 => string 'Admin' (length=5)
// 1 => string 'Article' (length=7)
// 2 => string 'Config' (length=6)
// 3 => string 'Goods' (length=5)
// 4 => string 'Index' (length=5)
// 5 => string 'Login' (length=5)
// 6 => string 'Menu' (length=4)
// 7 => string 'Mysql' (length=5)
// 8 => string 'Order' (length=5)
// 9 => string 'Other' (length=5)
// 10 => string 'Upload' (length=6)
// 11 => string 'User' (length=4)
// 12 => string 'Wechat' (length=6)
//下面是获取Index控制中你定义的方法,在mobadmin的应用场景中$control由前端传入,这样就能够达到我选择某个一个控制器的时候,就会输出这个控制中定义的方法。
$control = 'Index';
$actions = getActions('app\admin\controller' . '\\' . $control);
//结果:
// array (size=3)
// 0 => string 'index' (length=5)
// 1 => string 'welcome' (length=7)
// 2 => string 'ceshi' (length=5)
//系统中所有控制的方法怎么获取呢?遍历所有控制器就可以。
$controllers = getControllers('../application/admin/controller');
$actionsAll = [];
foreach( $controllers as $key=>$value) {
$actions[$value] = get_class_methods('app\admin\controller' . '\\' . $value);
}
//结果:
// 'Admin' =>
// array (size=15)
// 0 => string '__construct' (length=11)
// 1 => string '_initialize' (length=11)
// 2 => string '_empty' (length=6)
// 3 => string 'beforeAction' (length=12)
// 4 => string 'fetch' (length=5)
// 5 => string 'display' (length=7)
// 6 => string 'assign' (length=6)
// 7 => string 'engine' (length=6)
// 8 => string 'validateFailException' (length=21)
// 9 => string 'validate' (length=8)
// 10 => string 'success' (length=7)
// 11 => string 'error' (length=5)
// 12 => string 'result' (length=6)
// 13 => string 'redirect' (length=8)
// 14 => string 'getResponseType' (length=15)
// 'Article' =>
// array (size=18)
// 0 => string 'index' (length=5)
// 1 => string 'category' (length=8)
// 2 => string 'comment' (length=7)
// 3 => string '__construct' (length=11)
// 4 => string '_initialize' (length=11)
// 5 => string '_empty' (length=6)
// 6 => string 'beforeAction' (length=12)
// 7 => string 'fetch' (length=5)
// 8 => string 'display' (length=7)
// 9 => string 'assign' (length=6)
// 10 => string 'engine' (length=6)
// 11 => string 'validateFailException' (length=21)
// 12 => string 'validate' (length=8)
// 13 => string 'success' (length=7)
// 14 => string 'error' (length=5)
// 15 => string 'result' (length=6)
// 16 => string 'redirect' (length=8)
// 17 => string 'getResponseType' (length=15)
}
王明昌博客
