php获取类和方法注释,并提取文档
注释
获取
php
方法
提取
文档
>
通过
doc=
md
编程技术
发布日期
2022-11-25
更新日期
2022-11-25
阅读次数 116
文章字数 833
文档注释,以 /** 开头, */ 结尾
获取类注释:
$reflection = new ReflectionClass ( "APP" );
//通过反射获取类的注释
$doc = $reflection->getDocComment ();
echo $doc;
获取方法注释:
$ms = "test"; //获取名为 test 的方法注释
$class = new ReflectionClass($class_name);
$methods = $class->getMethods(ReflectionMethod::IS_STATIC | ReflectionMethod::IS_PUBLIC);
$doc = "";
foreach ($methods as $md){
if($md->{"class"} !="baseApi"){
if($md->{"name"} == $ms){
$doc = $md->getDocComment();
break;
}
}
}
默认取得的注释,是一个完整的字符串,以/** 开头,到 */结尾的完整内容,明显不好用。
所以要用正则进行匹配。一个简单的例子:
<?php
require "app/app_core.php";
$reflection = new ReflectionClass ( "APP" );
//通过反射获取类的注释
$doc = $reflection->getDocComment ();
if(preg_match_all("/@(\S*)\s*(\S*)\s*\n/",$doc,$matches)){
$data = array();
$max_length = count($matches[1]);
for($i=0; $i<$max_length;$i++){
$key = trim($matches[1][$i]);
$val = trim($matches[2][$i]);
$data[$key] = $val;
}
var_dump($data);die;
}
一般来说,@name 是参数,通过识别 key 的名称,进行不同的处理。比如 @param name 中文,提取时的key是 param,通过判断 key 正好是 param,则 value 再次尝试分割,取得 name 和 描述。
文章作者: 朱丰华
文章链接: https://smart.52dixiaowo.com/blog/post-180.html
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。
注释
获取
php
方法
提取
文档
>
通过
doc=
md
发表评论
相关推荐