获取文档注释方法封装(thinkphp5.*)
功能说明
一般情况下,做系统后台管理的时候需要记录每一个管理员用户的操作记录,如果在每个控制器的每个方法中都手动去执行一个写日志的方法的话,似乎有些麻烦,所以心血来潮写了这样一个类,与伙计们共勉,有更好的实现方法欢迎交流。
用到的PHP系统方法
-
- ReflectionMethod
- 2.ReflectionClass
注释规则以“@desc开头”
如:
代码示例
class = $class;
$this->methodName = $methodName;
}public function getDocument() {
$returnData = https://www.it610.com/article/[];
$classRef = new ReflectionClass($this->class);
$classDocument = $classRef->getDocComment();
// 获取方法的名称
$class_desc = [];
preg_match_all('/@desc(.*?)\n/', $classDocument, $class_desc);
$c_desc = !empty($class_desc[1][0]) ? trim($class_desc[1][0]) : "";
$returnData[] = $c_desc ?$c_desc : basename(get_class($this->class)) ;
if (!method_exists($this->class, $this->methodName)) {
$returnData[] = $this->methodName;
}$methodDocument = new ReflectionMethod($this->class, $this->methodName);
$method_desc = [];
;
preg_match_all('/@desc(.*?)\n/', $methodDocument, $method_desc);
if ($method_desc) {$m_desc = !empty($method_desc[1][0]) ? trim($method_desc[1][0]) : $this->methodName;
} else {
$m_desc = $this->methodName;
}
$returnData[] = $m_desc;
return implode("-", $returnData);
}}
使用方法: 首先创建一个base类让其继承与think\Controller类,然后让其他实际实现功能的控制器继承与base类,所有的日志写入记录都在base类的初始化函数中进行,
action();
$class_name = get_called_class();
$func = new \DocumentTools($this,$action);
halt ($func->getDocument());
// 获取到的注释文档
}}
推荐阅读
- ts泛型使用举例
- EditText默认不获取焦点弹出键盘
- whlie循环和for循环的应用
- 今日份H5
- 【实用教程】4种获取无水印视频素材的方法
- 插件化无法获取或找到.so文件
- P5 DS——构件与文档关联
- 获取知识的门槛
- 提取ipa|提取ipa 包内资源
- LaTeX记录|LaTeX记录 —— LaTeX文档基本结构