php获取类和方法注释,并提取文档

注释 获取 php 方法 提取 文档 > 通过 doc= md 编程技术
发布日期 2022-11-25 更新日期 2022-11-25 阅读次数 107 文章字数 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

发表评论

相关推荐
朱丰华   |   7个月前   |   php

php判断是否被iframe

220    评论    点赞
朱丰华   |   1年前   |   页面 · 监听

iframe子父页面信息传递与监听

374    评论    点赞
朱丰华   |   1年前   |   php

php正则表达式定界符:异常Delimiter must not be alphanumeric or backslash

190    评论    点赞
朱丰华   |   1年前   |   请求 · 一个

ab测压命令,apache测压工具

172    评论    点赞
朱丰华   |   1年前   |   php · 缓存 · opcache

php 加速、提高并发opcache

197    评论    点赞
朱丰华   |   1年前   |   参数 · 命令

golang获取命令行参数方法总结

88    评论    点赞
朱丰华   |   1年前   |   正则 · 表达

正则表达式,实现if...then...else

112    评论    点赞
朱丰华   |   1年前   |   变量 · mysql · sql · 用户

MySQL用户自定义变量

94    评论    点赞
朱丰华   |   1年前   |   sql · php

PHP如何使用PDO批量执行SQL?

114    评论    点赞
朱丰华   |   1年前   |   php · 字符 · 字符串

如何在 PHP 中将字符串的第一个字母转换为大写

148    评论    点赞
朱丰华   |   1年前   |   linux · 文件 · 行数

linux 取得文件行数

49    评论    点赞
朱丰华   |   1年前   |   php · 字符 · 正则

php正则表达式原生字符

85    评论    点赞
朱丰华   |   1年前   |   html · <

html浏览器当前tab标签切换时触发监听

105    评论    点赞
朱丰华   |   1年前   |   字符 · php · 比较

PHP比较字符串大小相关函数

110    评论    点赞
朱丰华   |   1年前   |   文件 · linux · 修改

linux文件的三个时间atime,mtime,ctime分别表示什么?

274    评论    点赞
朱丰华   |   1年前   |   linux · 文件

linux递归统计文件夹大小、du命令_Linux du命令:查看文件夹和文件的磁盘占用情况

191    评论    点赞
朱丰华   |   1年前   |   php

windows下编写、编译php扩展

157    评论    点赞
朱丰华   |   1年前   |   linux · php

linux下编写、编译php扩展

149    评论    点赞
朱丰华   |   1年前   |   js · vue · 监听

js vue监听,深度监听

113    评论    点赞
朱丰华   |   1年前   |   php · 混淆 · obfuscate · git

yakpro-po混淆php代码

105    评论    点赞
{{item.author_name}}   |   {{new Date(item.date*1000).log()}}   |   {{it}} ·

{{item.title}}

{{item.uv}}    评论    点赞