php获取控制器名字,ThinkPHP 3.2 获取项目所有控制器方法名称

ThinkPHP 3.2.2 获取项目所有方法名称,用途:呵呵!如果使用了多级控制器,请自行修改代码。public function index(){

$modules = array('Admin');  //模块名称

$i = 0;

foreach ($modules as $module) {

$all_controller = $this->getController($module);

foreach ($all_controller as $controller) {

$controller_name = $module.'/'.$controller;

$all_action = $this->getAction($controller_name);

foreach ($all_action as $action) {

$data[$i]['module'] = $module;

$data[$i]['controller'] = $controller;

$data[$i]['action'] = $action;

$i++;

}

}

}

echo '

';

print_r($data);

}

//获取所有控制器名称

protected function getController($module){

if(empty($module)) return null;

$module_path = APP_PATH . '/' . $module . '/Controller/';  //控制器路径

if(!is_dir($module_path)) return null;

$module_path .= '/*.class.php';

$ary_files = glob($module_path);

foreach ($ary_files as $file) {

if (is_dir($file)) {

continue;

}else {

$files[] = basename($file, C('DEFAULT_C_LAYER').'.class.php');

}

}

return $files;

}

//获取所有方法名称

protected function getAction($controller){

if(empty($controller)) return null;

$con = A($controller);

$functions = get_class_methods($con);

//排除部分方法

$inherents_functions = array('_initialize','__construct','getActionName','isAjax','display','show','fetch','buildHtml','assign','__set','get','__get','__isset','__call','error','success','ajaxReturn','redirect','__destruct', '_empty');

foreach ($functions as $func){

if(!in_array($func, $inherents_functions)){

$customer_functions[] = $func;

}

}

return $customer_functions;

}

改了下,用正则获取所有公共方法public function index(){

$modules = array('Admin');  //模块名称

$i = 0;

foreach ($modules as $module) {

$all_controller = $this->getController($module);

foreach ($all_controller as $controller) {

$controller_name = $controller;

$all_action = $this->getAction($module, $controller_name);

foreach ($all_action as $action) {

$data[$i] = array(

'name' => $controller . '_' . $action,

'status' => 1

);

$i++;

}

}

}

echo '

';

print_r($data);

}

//获取所有控制器名称

protected function getController($module){

if(empty($module)) return null;

$module_path = APP_PATH . '/' . $module . '/Controller/';  //控制器路径

if(!is_dir($module_path)) return null;

$module_path .= '/*.class.php';

$ary_files = glob($module_path);

foreach ($ary_files as $file) {

if (is_dir($file)) {

continue;

}else {

$files[] = basename($file, C('DEFAULT_C_LAYER').'.class.php');

}

}

return $files;

}

//获取所有方法名称

protected function getAction($module, $controller){

if(empty($controller)) return null;

$content = file_get_contents(APP_PATH . '/'.$module.'/Controller/'.$controller.'Controller.class.php');

preg_match_all("/.*?public.*?function(.*?)\(.*?\)/i", $content, $matches);

$functions = $matches[1];

//排除部分方法

$inherents_functions = array('_initialize','__construct','getActionName','isAjax','display','show','fetch','buildHtml','assign','__set','get','__get','__isset','__call','error','success','ajaxReturn','redirect','__destruct','_empty');

foreach ($functions as $func){

$func = trim($func);

if(!in_array($func, $inherents_functions)){

$customer_functions[] = $func;

}

}

return $customer_functions;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值