如何获取thinphp5中的所有控制器名称和方法名称

浏览:3514 发布日期:2018/01/10 分类:技术分享 关键字: tp5 rbac
文章分享来自求索网:http://www.qiusuoweb.com/110.html

我们先来获取所有控制器:

```php
/**
获取某个目录下的php文件名的函数
*/
function getControllers($dir) {
$pathList = glob($dir . '/*.php');
$res = [];
foreach($pathList as $key => $value) {
$res[] = basename($value, '.php');
}
return $res;
}

//根据thinkphp文件命名规则可以知道文件名和控制器的名称是一致的;
//根据thinkphp目录结构可以知道控制器目录的路径;
$controllers = getControllers('../application/admin/controller');
//如果你的控制器目录不是tp的默认目录按照你项目的时间目录传递给getControllers函数
```
上面完成所有控制器的获取,接下来我们获取控制中的所有方法:

```php
/**
获取某个控制器的方法名的函数
此方法过滤父级base控制器的方法,只保留自己的
*/
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;
}

//下面是获取Index控制中你定义的方法,在mobadmin的应用场景中$control由前端传入,这样就能够达到我选择某个一个控制器的时候,就会输出这个控制中定义的方法。
$control = 'Index';
$actions = getActions('app\admin\controller' . '\\' . $control);

//系统中所有控制的方法怎么获取呢?遍历所有控制器就可以。
$controllers = getControllers('../application/admin/controller');
$actionsAll = [];
foreach( $controllers as $key=>$value) {
$actions[$value] = get_class_methods('app\admin\controller' . '\\' . $value)
}

```
以上就是thinkphp获取所有控制器名称和方法。
最佳答案
评论( 相关
后面还有条评论,点击查看>>