给定如下数组:
array(
/** I'm foo! */
'foo' => 1,
/** I'm bar! */
'bar' => 2,
);
是否可以检索数组元素的DocComments ?据我所知,Reflection API并没有为此提供机制。如果这是可能的,我猜这将是一个相当"创造性"的解决方案。
反射API将无法自己完成此操作(或者如果它不是一个类则根本不能)。例如,使用以下代码:
<?php
$bar = array(
/** I'm foo! */
'foo' => 1,
/** I'm bar! */
'bar' => 2,
);
反射API在这里是无用的(没有类,没有函数)。您仍然可以使用tokenizer:
获得它。$code = file_get_contents('input.php');
$tokens = token_get_all($code);
foreach ($tokens as $key => $token) {
if (is_array($token)) {
if ($token[0] == T_DOC_COMMENT) {
for ($i=$key+1; $i<count($tokens); $i++) {
if (is_array($tokens[$i]) && $tokens[$i][0] != T_WHITESPACE) {
echo $tokens[$i][2] . ' = '.$token[1].PHP_EOL;
break;
}
}
} /* T_DOC_COMMENT */
}
}
这将打印:
'foo' = /** I'm foo! */
'bar' = /** I'm bar! */
但是,要记住,这是在一个非常小的示例上完成的。如果您想解析一个完整的PHP文件(包含类、函数等),那么将是一个很好的选择一路颠簸 . 总之,这是可能的,但它涉及很多工作,而且很容易出错。我不推荐。可能存在一个实际的PHP解析器,但我从未使用过,所以我无法判断。