我想整理一个大型函数包含文件,其中 PHPDoc 仅部分使用。有一些没有 PHPDoc 的功能,比如

function name($var1,$var2){ // explanation what it does
  # ...
}

还有一些 PHPDoc 存在但不完整的地方,比如缺少一些变量:
/**
  * explanation
  *
  * @param boolean $var1 foo foo foo
  *
  * @return null
  */
function name2($var1,$var2){
  # ...
}

要不就
/** explanation
  */
function name3($var1,$var2){
  # ...
}

如何添加所有缺失的变量定义和返回值,为添加的变量使用正确的“未知”标签?

如果它有返回值,它可以分析每个函数,它应该转换已经存在的注释(在每个函数后面)并在 PHPDoc 中使用它们。

我知道您必须手动检查结果,但是使用已经存在的数据生成骨架会非常有帮助。

最佳答案

您可以使用 Reflectiontoken_get_all 的组合来实现,后者使用 Zend 的词法扫描器将字符串解析为 PHP lanugage tokens 和很可能的正则表达式。

反射的问题在于某些方法,例如 ReflectionFunctionAbstract::getReturnType 仅在 PHP 7 上可用。

在 PHP 5+ 中,您可以使用 ReflectionFunctionAbstract::getParametersReflectionFunctionAbstract::getDocComment 等。

如果没有 DocBlock,您可以使用 ReflectionFunctionAbstract::getStartLineReflectionFunctionAbstract::getEndLine 获取函数开始和结束行,将源块复制到字符串并使用 token_get_all 获取一组 PHP token 以单独分析。

PHP 5.6 中的反射示例:

<?php

/**
 * explanation
 *
 * @param boolean $var1 foo foo foo
 *
 * @return null
 */
 function test($var1, $var2) {

 }

 echo ReflectionFunction::export('test', true);

输出:
/**
 * explanation
 *
 * @param boolean $var1 foo foo foo
 *
 * @return null
 */
Function [ <user> function test ] {
  @@ index.php 10 - 12

  - Parameters [2] {
    Parameter #0 [ <required> $var1 ]
    Parameter #1 [ <required> $var2 ]
  }
}

关于phpdoc - 使用现有注释自动添加 PHPDoc,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34041154/

10-11 22:12
查看更多