了
解
红
点
最
新
动
态
和
行
业
资
讯
关于php函数的注释获取,在之前了解到python有__doc__获取函数的描述,进而探索发现php也提供获取函数注释的函数;
使用如下:
首先你的注释要符合标准,才能使用php函数来获取;
用到的php的反射函数;
ReflectionMethod($class,$func): 此函数传入两个参数;
$class和$func代表某个类的某个函数;
注释规范:
/**
* 描述 description
*/
使用函数获取为:
$func = new ReflectionMethod($class,$func);
来个具体的代码吧,可以copy运行看看效果:
/**
* 获得指定类的注释 用户权限设置
* @param $model 模块名称 例如 admin shop
* @param $action 控制器名称 由于用的是 模块里面的函数调用所有将参数的方向替换 因为模板第一个是默认参数
* 类的注释必须卸载定义Class 关键字的前面
*/
function get_class_annotation($action,$model){
// return $model ."-".$action;
// appadmincontrollerPower
$class = "app\".strtolower($model)."controller\".strtolower($action);
// return class_exists($class);
if(class_exists($class)) {
// ReflectionClass
$class = new ReflectionClass($class);
$tmp = $class->getDocComment();
// dump($reflect);
$flag = preg_match_all('/@name(.*?)n/',$tmp,$tmp);
$tmp = trim($tmp[1][0]);
return $tmp = $tmp !='' ? $tmp:'没有设置';
}
}
/**
* 获得指定类里面指定方法的注释 用于权限设置
* @param $model 模块名称 例如 admin shop
* @param $action 控制器名称
* @param $function 方法名称
* @return string 返回注释
* @throws ReflectionException
* 格式: /**
* @name 增加权限
*/
function get_annotation($model,$action,$function){
return $class = "app\".strtolower($model)."controller\".strtolower($action);
if(class_exists($class)) {
$reflect = new ReflectionMethod($class, $function);
$tmp = $reflect->getDocComment();
$flag = preg_match_all('/@name(.*?)n/', $tmp, $tmp);
$tmp = trim($tmp[1][0]);
return $tmp = $tmp != '' ? $tmp : '没有设置';
}
}
大攻防