TypechoJoeTheme

至尊技术网

统计
登录
用户名
密码
/
注册
用户名
邮箱

ThinkPHP获取所有控制器的名称和方法

2021-03-20
/
0 评论
/
349 阅读
/
正在检测是否收录...
03/20

获取当前控制器的名称和方法

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);
经验PHPThinkPHP控制器方法
朗读
赞(0)
版权属于:

至尊技术网

本文链接:

https://www.zzwll.cn/archives/5033/(转载时请注明本文出处及文章链接)

评论 (0)