当前位置:首页 > 技术 > PHP > 正文内容

使用php提取方法注释

Watrt7年前 (2017-12-10)PHP19550

1.注释格式

<?php
    /**
     * @method 发送邮件
     * @url    email/send?token=xxx
     * @http  POST
     * @param  token              string [必填] 调用接口凭证 (post|get)
     * @param  ema_type           enum   [必填] 发送速度:'普通','紧急','延时'
     * @param  ema_from           enum   [必填] 来源:'B2C','主站','客户网','CRM'
     * @param  ema_from_email     string [可选] 发送人邮箱
     * @param  ema_from_name      string [可选] 发送人
     * @param  ema_to_email       string [必填] 接收人手机号码,多个逗号分隔
     * @param  ema_title          string [必填] 标题
     * @param  ema_text           string [必填] 内容
     * @param  ema_style          string [可选] 信息类型 例如:邮箱验证,取回密码....
     * @param  ema_expire_time    int    [可选] 过期时间戳,超过此时间即使失败也不再发送
     * @author soul \r\n
     * @copyright 2017/4/13 \r\n
     * @return {"status":false,"data":'失败原因',"code":0} \r\n
     */
     public function sendEmail()
     {
        //xxxx
     }

2.代码格式

<?php
    public function test()
    {
        $reflection = new \ReflectionClass ( 'apps\v10\controller\search' );
        $methods = $reflection->getMethods(\ReflectionMethod::IS_PUBLIC);
        $docData = [];
        //遍历所有的方法
        foreach ($methods as $method) {
            //获取方法的注释
            $doc = $method->getDocComment();
            $doc = ltrim($doc,'/**');
            $doc = rtrim($doc,'*/');
            if (!empty($doc)) {
                $doc = explode("\n",$doc);
                $data = [];
                foreach ($doc as $value) {
                    //获取接口名
                    $strNum = strpos($value, '* @method');
                    if ($strNum !== false){
                        $data['api_name'] = trim(str_replace('* @method','',$value));
                        continue;
                    }
                    //获取请求地址
                    $strNum = strpos($value, '* @url');
                    if ($strNum !== false){
                        $data['url'] = trim(str_replace('* @url','',$value));
                        continue;
                    }
                    //获取请求类型
                    $strNum = strpos($value, '* @http');
                    if ($strNum !== false){
                        $data['http'] = trim(str_replace('* @http','',$value));
                        continue;
                    }
                    //获取字段相关信息
                    $strNum = strpos($value, '* @param');
                    if ($strNum !== false){
                        //获取字段名
                        $params = trim(str_replace('* @param','',$value));
                        $lineNum = strpos($params, ' ');
                        $field_name =  trim(mb_substr($params,0,$lineNum,'UTF-8'));

                        //获取字段类型
                        $params = trim(str_replace($field_name,'', $params));
                        $lineNum = strpos($params, ' ');
                        $field_type =  trim(mb_substr($params,0,$lineNum,'UTF-8'));

                        //获取字段是否必填
                        $params = trim(str_replace($field_type,'', $params));
                        $lineNum = strpos($params, '[必填]');
                        if ($lineNum !== false) {
                            $non_empty =  trim(substr($params,0,8));
                        } else {
                            $non_empty = '[可选]';
                        }

                        //获取字段描述
                        $params = trim(str_replace($non_empty,'', $params));
                        $data['params'][] = [
                            'field_name' => $field_name,
                            'field_type' => $field_type,
                            'non-empty'  => $non_empty,
                            'field_desc' => $params
                        ];
                        //获取返回值
                        $strNum = strpos($value, '* @return ');
                        if ($strNum !== false){
                            $data['return'] = trim(str_replace('* @return','',$value));
                            continue;
                        }

                        //获取作者
                        $strNum = strpos($value, '* @author');
                        if ($strNum !== false){
                            $data['author'] = trim(str_replace('* @author','',$value));
                            continue;
                        }

                        //获取最后修改时间
                        $strNum = strpos($value, '* @copyright');
                        if ($strNum !== false){
                            $data['copyright'] = trim(str_replace('* @copyright','',$value));
                            continue;
                        }
                    }
                }
                $docData[] = $data;
            }
        }
    }


分享给朋友:

相关文章

php使用openssl

php使用openssl

证书生成:<?php   $dn = array(       "countryName" => 'CN', //所在国家名称       "stateOrProvinceName" => '四川...

常用正则表达式

常用正则表达式

中文字符:[\u4e00-\u9fa5]双字节字符:[^\x00-\xff]空白行:\sEmail地址:\w[-\w.+]*@([A-Za-z0-9][-A-Za-z0-9]+\.)+[A-Za-z]{2,14}网址URL:^((https|http|ftp|rtsp|mms)?:\/\/)[^\s]+手机(国内):0?(13|14|15|18|17)[0-9]{9}电话号码(国内):[0-9-()()]{7,18}负浮点数:-([1-9]\d*.\d*|0\.\d*[1-9]\d*)匹配整数:...

PHP正则表达式使用详解

PHP正则表达式使用详解

正则表达式是由普通字符(例如字符 a 到 z)以及特殊字符(称为元字符)组成的文字模式。正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。    可以通过在一对分隔符之间放入表达式模式的各种组件来构造一个正则表达式,即/expression/    普通字符    由所有那些未显式指定为元字符的打印和非打印字符组成。这包括所有的大写和小写字母字符,所有数字,所有标点符号以及一些符号。 ...

phpword 转换PDF笔记

phpword 转换PDF笔记

1、首先安装composer2、然后安装包:composer require phpoffice/phpword3、安装转换需求的包:composer require Dompdf\Dompdf4、由于中文支持不好,文档中没有中文字体所以要添加中文字体该工具包的Git地址为:https://github.com/dompdf/utils 下载完成后,解压,复制其中的load_font.php文件到项目下的verdor/dompdf/dompdf目录下,与l...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。