/**
* 獲取控制器下的所有的控制器類名稱和控制器類中的所有的方法
* @param string $path 控制器的存放路徑
* @return array
*/
function getControllerClassFunction($path="./libs/Controller/"){
//設(shè)置加載的文件拓展名
spl_autoload_extensions('.class.php');
//加載控制器目錄下的所有類
set_include_path(get_include_path().PATH_SEPARATOR.$path);
//設(shè)置為自動(dòng)加載文件
spl_autoload_register();
$handle=opendir($path);
$arr['function']=array();
$arr['file']=array();
//讀取控制器目錄下面的所有控制器文件,并將每一個(gè)控制器類的名稱和類里面的方法放進(jìn)數(shù)組$arr中
while(($file=readdir($handle))!==false){
if(!($file=='.'||$file=='..')){
//將文件名稱分割便于獲取控制器名
$file=explode("Controller", $file);
//獲取控制器文件下的類名
$filename = $file[0].'Controller';
//獲取該類下面的所有的函數(shù)名稱
$funcs=get_class_methods($filename);
for($i=0;$i<count($funcs);$i++){
//將重復(fù)的方法名去掉
if(!(in_array($funcs[$i], $arr['method'])))
//將類中的不重復(fù)的方法名稱放進(jìn)數(shù)組中
$arr['method'][]=$funcs[$i];
}
//將控制器名稱放入數(shù)組中(只是放入控制器文件Controller前面的字段)
$file=$file[0];
$arr['file'][]=$file;
}
}
return $arr;
}
//這是我寫的一個(gè)關(guān)于如何讀取控制器下面所有的類名稱和里面的方法的函數(shù)
//便于我們?cè)趇ndex.php中判斷前端傳過(guò)來(lái)的控制器方法 或 控制器是否存在
//希望大家給我驗(yàn)證一下,看行不行,謝謝大家啦!
2014-09-05
已經(jīng)測(cè)試了,是可以的。
使用了自動(dòng)載入類的函數(shù),這點(diǎn)很好。
但是這樣就會(huì)批量include所有的控制器文件了,會(huì)損耗一些性能。