为了账号安全,请及时绑定邮箱和手机立即绑定

/**

 * 获取控制器下的所有的控制器类名称和控制器类中的所有的方法

 * @param  string $path  控制器的存放路径

 * @return array

 */

function  getControllerClassFunction($path="./libs/Controller/"){

//设置加载的文件拓展名

spl_autoload_extensions('.class.php');

//加载控制器目录下的所有类

set_include_path(get_include_path().PATH_SEPARATOR.$path);

//设置为自动加载文件

spl_autoload_register();

$handle=opendir($path);

$arr['function']=array();

$arr['file']=array();

//读取控制器目录下面的所有控制器文件,并将每一个控制器类的名称和类里面的方法放进数组$arr中

while(($file=readdir($handle))!==false){

if(!($file=='.'||$file=='..')){

//将文件名称分割便于获取控制器名

$file=explode("Controller", $file);

//获取控制器文件下的类名

$filename = $file[0].'Controller';

//获取该类下面的所有的函数名称

$funcs=get_class_methods($filename);

for($i=0;$i<count($funcs);$i++){

//将重复的方法名去掉

if(!(in_array($funcs[$i], $arr['method'])))

//将类中的不重复的方法名称放进数组中

$arr['method'][]=$funcs[$i];

}

//将控制器名称放入数组中(只是放入控制器文件Controller前面的字段)

$file=$file[0];

$arr['file'][]=$file;

}

}

return $arr;

}

//这是我写的一个关于如何读取控制器下面所有的类名称和里面的方法的函数

//便于我们在index.php中判断前端传过来的控制器方法 或 控制器是否存在

//希望大家给我验证一下,看行不行,谢谢大家啦!

正在回答

1 回答

已经测试了,是可以的。

使用了自动载入类的函数,这点很好。

但是这样就会批量include所有的控制器文件了,会损耗一些性能。


0 回复 有任何疑惑可以回复我~
#1

DekingChen 提问者

非常感谢!
2014-12-22 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信