给出这样的数组:
array(
/** I'm foo! */
'foo' => 1,
/** I'm bar! */
'bar' => 2,
);
是否可以检索数组元素的DocComments?据我所知,Reflection API没有为此提供机制。如果有可能,我猜它必须是一个非常“有创意”的解决方案。
答案 0 :(得分:1)
Reflection API本身无法做到这一点(如果它不是一个类,则根本不能这样做)。例如,使用以下代码:
<?php
$bar = array(
/** I'm foo! */
'foo' => 1,
/** I'm bar! */
'bar' => 2,
);
Reflection 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文件(包括类,函数等),你将进入 颠簸。
总之,它是可能的,但它涉及大量工作并且非常容易出错。我不推荐它。有might be an actual PHP parser that exists,但我从来没用过,所以我说不出来。