我想整理一个大型函数包含文件,其中 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 中使用它们。
我知道您必须手动检查结果,但是使用已经存在的数据生成骨架会非常有帮助。
最佳答案
您可以使用 Reflection 和 token_get_all 的组合来实现,后者使用 Zend 的词法扫描器将字符串解析为 PHP lanugage tokens 和很可能的正则表达式。
反射的问题在于某些方法,例如 ReflectionFunctionAbstract::getReturnType
仅在 PHP 7 上可用。
在 PHP 5+ 中,您可以使用 ReflectionFunctionAbstract::getParameters
、 ReflectionFunctionAbstract::getDocComment
等。
如果没有 DocBlock,您可以使用 ReflectionFunctionAbstract::getStartLine
和 ReflectionFunctionAbstract::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/