反射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,但我從來沒有使用過,所以我不知道。
這些不是doccomments,但只是評論。此外,您的示例並未指定遇到這種情況的上下文,例如類,功能或僅僅是文件。 – Gordon 2011-04-11 14:13:36
你爲什麼要這樣做?評論是針對人類的,以這種方式使用它們似乎違反直覺。 – 2011-04-11 14:16:01
@Adam指針:不是。評論可以用於很多事情(請參閱PHPDocumentor和PHPUnit)。而且,在Java中,它們實際上對編譯器很有用(例如:@exception標籤)。 – netcoder 2011-04-11 14:23:29