Thinkphp6,注解注释生成api列表

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
简介: Thinkphp6,注解注释生成api列表

自己写的一个小功能需要用到,稍微存一下该段代码, 接口代码需要写的格式


wp_editor_md_9597b279b4f9cf9a7838ef38b4586077.jpg


// 遍历controller目录下的文件,判断注释中是否包含@Siam-Api
$dir = app_path()."/controller/";
$dir_contain = scandir($dir);
unset($dir_contain[0]);
unset($dir_contain[1]);// . 和 ..
$doc_list = [];
foreach ($dir_contain as $child_path){
    $path = $dir.$child_path . "/";
    // 只遍历控制器目录下的文件 不遍历子目录 可以自行改造
    if (is_dir($dir.$child_path)) continue;
    $file_list = glob($path. '*.php');
    foreach ($file_list as $file_path){
        $className = basename($file_path);
        $className = str_replace(".php", "",$className);
        $namespace = app()->getNamespace()."\\controller\\".$className;
        $class_reflec = new ReflectionClass($namespace);
        $method_list = $class_reflec->getMethods();
        foreach ($method_list as $method_reflec){
            // 包含@Siam-Api才需要解析源码
            $method_doc = $method_reflec->getDocComment();
            if (strpos( $method_doc,"@Siam-Api") == false) continue;
            $method_code = FileHelper::get_file_content_by_line($file_path, $method_reflec->getStartLine(), $method_reflec->getEndLine());
            // 参数解析逻辑,可以通过代码解析,也可以自己在注释里声明  然后解析 逻辑跟@Siam-Api这个字段一致
            // 解析源码里是否有validate  没有则是无参数
            if (strpos($method_code, "validate([") === false) {
                $param = [];
            }else{
                $param = [];
                // 解析参数列表
                $pattern_1 = '/\$this->validate\(([\s\S]*?)\);/';
                preg_match($pattern_1, $method_code, $matches);
                if (!isset($matches[1])) continue;
                // 拿到validate的代码,按行解析
                $param_code = explode("\n", $matches[1]);
                foreach ($param_code as $param_code_one){
                    if (strpos($param_code_one, "=>") === false) continue;
                    $param_code_one = str_replace(" ", "", $param_code_one);
                    // 正则匹配取出 字段名、规则、注释
                    $param_field_pattern = '/\'([\s\S]*?)\'=>\'([\s\S]*?)\'([\s\S]*)/';
                    preg_match($param_field_pattern, $param_code_one, $matches_param_field);
                    $param_field_note = str_replace(",", "", $matches_param_field[3]);
                    $param_field_note = str_replace("//", "", $param_field_note);
                    $param[] = [
                        $matches_param_field[1],// 字段名
                        $matches_param_field[2],// 规则
                        $param_field_note,// 注释
                    ];
                }
            }
            // groupName method_path method_dec逻辑自行扩展
            $doc_list['groupName'][] = [
                'method_name' => $method_reflec->getName(),
                'method_path' => '',
                'method_dec'  => '',
                'param'       => $param
            ];
        }
    }
}
// 应该返回成json等格式,然后前段html接入
var_dump($doc_list);


目录
相关文章
|
6月前
|
API 开发者
如何获取淘宝/天猫购物车的商品列表 API 返回值说明
淘宝/天猫的购物车API返回值会包含当前用户购物车中的商品列表及相关信息。以下是API返回值可能包含的主要字段和信息的详细说明:
|
6月前
|
存储 缓存 安全
怎样获取淘宝客商品列表api API 返回值说明?
淘宝客(Taobao Affiliate)是淘宝的联盟营销平台,允许合作伙伴通过推广商品获得佣金。淘宝客商品列表API是用来获取淘宝商品信息的接口之一。以下是淘宝客商品列表API的返回值示例和说明。请注意,实际的返回值可能会因API版本、调用参数以及淘宝平台本身的更新而有所不同,因此强烈建议查阅淘宝官方API文档以获取最准确的信息。
|
6月前
|
数据采集 数据挖掘 API
淘系API接口推荐:淘宝搜索列表数据接口
淘系API接口推荐:淘宝搜索列表数据接口
|
6月前
|
API
uni-app 146朋友圈列表api开发
uni-app 146朋友圈列表api开发
58 0
|
18天前
|
JSON API 数据格式
店铺所有商品列表接口json数据格式示例(API接口)
当然,以下是一个示例的JSON数据格式,用于表示一个店铺所有商品列表的API接口响应
|
1月前
|
API 数据安全/隐私保护 开发者
淘宝 API:关键词搜商品列表接口,助力商家按价格销量排序分析数据
此接口用于通过关键词搜索淘宝商品列表。首先需在淘宝开放平台注册并创建应用获取API权限,之后利用应用密钥和访问令牌调用接口。请求参数包括关键词、页码、每页数量、排序方式及价格区间等。返回结果含总商品数量及具体商品详情。使用时需注意签名验证及官方文档更新。
|
3月前
|
XML JSON API
义乌购API接口揭秘:轻松获取海量商品列表数据
义乌购商品列表数据接口基于RESTful架构,支持HTTP协议,使开发者能按关键词或条件搜索商品列表。需先注册获取App Key/Secret,完成认证后使用Access Token调用接口。接口返回商品标题、价格等信息,适用于电商应用开发、数据分析及第三方服务对接。更多详情参阅:b.mrw.so/2Pv6Qu。
|
3月前
|
JSON API 开发者
GET方式请求速卖通平台API 接口:商品列表数据获取指南
速卖通商品列表数据接口(如 `aliexpress.item_search`)让开发者获取商品信息列表, 包括名称、价格等关键数据。接口支持按关键词、分类ID等条件获取商品列表及详细信息, 并可通过分页与排序优化展示效果。开发者需在速卖通开放平台注册并创建应用获取API密钥, 构建HTTP请求并处理JSON响应数据。[体验API](http://b.mrw.so/2Pv6Qu)。
|
3月前
|
API 网络架构
【Azure 环境】用 PowerShell 调用 AAD Token, 以及调用Azure REST API(如资源组列表)
【Azure 环境】用 PowerShell 调用 AAD Token, 以及调用Azure REST API(如资源组列表)
|
5月前
|
API 开发工具
企业微信api接口调用-触发企业微信推送会话列表
企业微信api接口调用-触发企业微信推送会话列表