Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/283.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
是否有可用的PHP DocBlock解析器工具?_Php_Documentation_Parsing_Docblocks - Fatal编程技术网

是否有可用的PHP DocBlock解析器工具?

是否有可用的PHP DocBlock解析器工具?,php,documentation,parsing,docblocks,Php,Documentation,Parsing,Docblocks,我想建立一些规模较小,但高度定制的几个项目的文档网站。它很好,但很重。我曾想过尝试调整模板,但在花了几分钟的时间研究后,我决定这将是太多的工作 理想情况下,我希望看到一些东西,我可以传递一堆文件,让它返回所有的文件、类、属性和方法,以及它们的元数据,这样我就可以基于这些数据构建一些简单的模板 是否有任何DocBlock parser-only项目可以帮助我完成这项任务,或者我被困在重新发明轮子上了吗?您可以使用 请参见本教程: 还有一种可以解析docblock的方法。只是为了更新答案。您可能还想

我想建立一些规模较小,但高度定制的几个项目的文档网站。它很好,但很重。我曾想过尝试调整模板,但在花了几分钟的时间研究后,我决定这将是太多的工作

理想情况下,我希望看到一些东西,我可以传递一堆文件,让它返回所有的文件、类、属性和方法,以及它们的元数据,这样我就可以基于这些数据构建一些简单的模板


是否有任何DocBlock parser-only项目可以帮助我完成这项任务,或者我被困在重新发明轮子上了吗?

您可以使用

请参见本教程:


还有一种可以解析docblock的方法。

只是为了更新答案。您可能还想签出该项目。我认为它的PHP DocBlock解析器可以很容易地提取为独立的解决方案

以防有人需要正则表达式(尝试此操作并注释它可以满足她/他的需要)

示例()

<?php
$str ='
/**    
 * @param   integer  $int  An integer
 * @return  boolean
 */
';
if (preg_match_all('/@(\w+)\s+(.*)\r?\n/m', $str, $matches)){
  $result = array_combine($matches[1], $matches[2]);
}

var_dump($result);
作为furgas,我已经作为一个独立的项目使用了多年,效果很好

<?php
$class = new ReflectionClass('MyClass');
$phpdoc = new \phpDocumentor\Reflection\DocBlock($class);

var_dump($phpdoc->getShortDescription());
var_dump($phpdoc->getLongDescription()->getContents());
var_dump($phpdoc->getTags());
var_dump($phpdoc->hasTag('author'));
var_dump($phpdoc->hasTag('copyright'));

要使用反射,您不需要加载包含感兴趣类的PHP脚本吗?对于任意长的PHP脚本列表,您是如何做到这一点的?@Ira请参见中的示例-如果您想解析类的文件,您可以使用DocBlox并在您可以使用的目录上进行迭代,DocBlox已与phpDocumentor合并成为。尽管我同意phpDocumentor很好,OP明确要求的内容不是phpDocumentor
<?php
$str ='
/**    
 * @param   integer  $int  An integer
 * @return  boolean
 */
';
if (preg_match_all('/@(\w+)\s+(.*)\r?\n/m', $str, $matches)){
  $result = array_combine($matches[1], $matches[2]);
}

var_dump($result);
<?php
$class = new ReflectionClass('MyClass');
$phpdoc = new \phpDocumentor\Reflection\DocBlock($class);

var_dump($phpdoc->getShortDescription());
var_dump($phpdoc->getLongDescription()->getContents());
var_dump($phpdoc->getTags());
var_dump($phpdoc->hasTag('author'));
var_dump($phpdoc->hasTag('copyright'));