时间:2021-07-01 10:21:17 帮助过:4人阅读
$v){
// 1. 去掉基准路径
$v = str_replace($basepath,'',$v);
// 2. 去掉后缀
$v = preg_replace('/\.php$/i','',$v);
// 3. 拆分过滤
$v = Core_AppUtils::normalize($v,DIRECTORY_SEPARATOR);
if (empty($v)) continue;
$paths[$k] = implode('_',$v);
}
$d = array();
foreach ($paths as $controller){
$d[$controller] = self::getActionListFromControllerClass($controller);
}
return $d;
}
static function getActionListFromControllerClass($controller_name){
static $controllerClassPrefix = null;
if (!$controllerClassPrefix) {
$controllerClassPrefix = Core_App::ini('mvc/web/dispatcher/controllerClassPrefix','Core_Controller_');
}
$clazz = "{$controllerClassPrefix}{$controller_name}";
Core_Autoloader::loadClass($clazz,true);
$obj = new ReflectionClass($clazz);
$d = array();
$publicMethods = $obj->getMethods(ReflectionMethod::IS_PUBLIC);
foreach ($publicMethods as $method){
if (preg_match('/^action/i',$method->name)) {
$action_name = preg_replace('/^action/i','',$method->name);
$rmd = Core_Mvc_Router::resourceEncode($controller_name,$action_name);
$q = array_shift($rmd);
$d[$q] = self::getAclResourceDescription($method->getDocComment());
}
}
return array(
'description' => self::getAclResourceDescription($obj->getDocComment()),
'actions' => $d
);
}
static function getAclResourceDescription($finder){
static $tagfinder_start = '@aclres-finder-desc{';
static $tagfinder_end = '}aclres-finder-desc@';
if (empty($finder)) return '';
$start = stripos($finder,$tagfinder_start);
if ($start){
$end = stripos($finder,$tagfinder_end);
if ($end && $end > $start){
// 只有闭合的标签才行
$start = $start+strlen($tagfinder_start);
return trim(substr($finder,$start,$end-$start));
}
}
return '';
}
}
?
1 楼 vb2005xu 2012-05-31
http://www.php10086.com/page/3 不错的博客2 楼 vb2005xu 2012-05-31
http://opauth.org/3 楼 vb2005xu 2012-06-01
http://www.shejidaren.com/category/css