Я недавно познакомился с Reflection
и экспериментировал с ним, особенно с getDocComment()
, однако, похоже, он поддерживает только /** */
блоки комментариев.
/** foobar */
class MyClass{}
$refl = new ReflectionClass('MyClass');
// produces /** foobar */
echo $refl->getDocComment();
-Versus-
# foobar
class MyClass{}
$refl = new ReflectionClass('MyClass');
// produces nothing
echo $refl->getDocComment();
Разве невозможно уловить это, не прибегая к какой-либо ерунде file_get_contents(__FILE__)
?
Согласно ответу dader51 , я полагаю, что мой лучший подход будет выглядеть примерно так:
// random comment
#[annotation]
/**
* another comment with a # hash
*/
#[another annotation]
$annotations
= array_filter(token_get_all(file_get_contents(__FILE__)), function(&$token){
return (($token[0] == T_COMMENT) && ($token = strstr($token[1], '#')));
});
print_r($annotations);
Выходы:
Array
(
[4] => #[annotation]
[8] => #[another annotation]
)