Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将phpdoc解析为JSON_Json_Phpdoc_Abstract Syntax Tree_Jsduck - Fatal编程技术网

将phpdoc解析为JSON

将phpdoc解析为JSON,json,phpdoc,abstract-syntax-tree,jsduck,Json,Phpdoc,Abstract Syntax Tree,Jsduck,我想找到一种使用phpdoc2将PHP项目解析为JSON而不是抽象语法树XML的方法。虽然我当然可以将XML解析为JSON,但在这里创建XML似乎是不必要的开销 因此,简单地说,问题是:有没有一种简单的方法可以配置phpdoc2的解析器直接生成JSON而不是XML?或者是关于在phpdoc2中扩展什么以将解析输出路由到JSON的一些线索 这个问题背后的故事是:我想为我的PHP项目创建类似JSDuck的文档。虽然我发现我不会走那条路,但有两个原因: 我不想在我的PHP类中使用phpdoc注释,也不

我想找到一种使用phpdoc2将PHP项目解析为JSON而不是抽象语法树XML的方法。虽然我当然可以将XML解析为JSON,但在这里创建XML似乎是不必要的开销

因此,简单地说,问题是:有没有一种简单的方法可以配置phpdoc2的解析器直接生成JSON而不是XML?或者是关于在phpdoc2中扩展什么以将解析输出路由到JSON的一些线索

这个问题背后的故事是:我想为我的PHP项目创建类似JSDuck的文档。虽然我发现我不会走那条路,但有两个原因:

  • 我不想在我的PHP类中使用phpdoc注释,也不想在其中添加特定于JSDuck的内容
  • 不需要整个JSDuck文档界面,因为我将自己创建一个非常定制的界面
  • 更喜欢PHP解决方案

  • 在phpdoc2上花了半天时间后,我终于找到了一个我认为是正确的解决方案。为了实现这一目标,不必担心甚至不必知道phpdoc2中的抽象语法树XML

    解决办法是:

    创建一个新的writer类
    Json.php
    ,并将其与其他writer一起放入
    src/phpDocumentor/Plugin/Core/Transformer/writer/
    。一个好的起点是使用
    Graph.php
    writer并重写它以输出JSON而不是SVG

    创建并使用新的简单模板,如:

    <?xml version="1.0" encoding="utf-8"?>
    <template>
        <transformations>
            <transformation writer="Json" artifact="classes.json" />
        </transformations>
    </template>
    

    最后,在项目中调用
    phpdoc
    时使用模板。

    在phpdoc2上花了半天时间后,我终于找到了一个我认为是正确的解决方案。为了实现这一目标,不必担心甚至不必知道phpdoc2中的抽象语法树XML

    解决办法是:

    创建一个新的writer类
    Json.php
    ,并将其与其他writer一起放入
    src/phpDocumentor/Plugin/Core/Transformer/writer/
    。一个好的起点是使用
    Graph.php
    writer并重写它以输出JSON而不是SVG

    创建并使用新的简单模板,如:

    <?xml version="1.0" encoding="utf-8"?>
    <template>
        <transformations>
            <transformation writer="Json" artifact="classes.json" />
        </transformations>
    </template>
    
    最后,在项目上调用
    phpdoc
    时,只需使用模板即可