【问题标题】:Parsing phpdoc to JSON将 phpdoc 解析为 JSON
【发布时间】:2013-06-12 23:13:31
【问题描述】:
我想找到一种方法来使用 phpdoc2 将 PHP 项目解析为 JSON 而不是抽象语法树 XML。虽然我当然可以将 XML 解析为 JSON,但在这里创建 XML 似乎是不必要的开销。
所以,简而言之,问题是:有没有一种简单的方法可以将 phpdoc2 的解析器配置为直接生成 JSON 而不是 XML?或者也许有一些关于在 phpdoc2 中扩展什么以将解析输出路由到 JSON 的线索?
这个问题背后的故事是:我想为我的 PHP 项目创建类似 JSDuck 的文档。虽然我发现JSDuck can be used with PHP projects 我不会走那条路,原因有两个:
- 不想在我的 PHP 类中使用 phpdoc cmets 或在其中添加一些 JSDuck 特定的东西;
- 真的不需要整个 JSDuck 文档界面,因为我将自己创建一个非常自定义的界面;
- 首选 PHP 解决方案。
【问题讨论】:
标签:
json
phpdoc
abstract-syntax-tree
jsduck
【解决方案1】:
在 phpdoc2 上花了半天时间后,我终于找到了一个我认为是正确的解决方案。无需担心甚至知道 phpdoc2 中的抽象语法树 XML 即可实现这一目标。
解决办法是:
创建一个新的 writer 类 Json.php 并将其与其他 writer 一起放入 src/phpDocumentor/Plugin/Core/Transformer/Writer/。一个好的起点是采用 Graph.php 编写器并将其重写为输出 JSON 而不是 SVG;
创建并使用一个新的简单模板,例如:
<?xml version="1.0" encoding="utf-8"?>
<template>
<transformations>
<transformation writer="Json" artifact="classes.json" />
</transformations>
</template>
将 Json writer 添加到 src/phpDocumentor/Plugin/Core/ServiceProvider.php 的 register 方法中:
$writerCollection['Json'] = new Writer\Json();
最后,只需在您的项目上调用 phpdoc 时使用模板即可。