Я хотел бы иметь возможность реализовать пользовательские аннотации в моих объектах PHP5, и я хотел бы узнать, как работает весь процесс, создавая собственный парсер.
Для начала, однако, мне нужно знать, как узнать аннотации.
Есть ли метод Reflection, который я пропускаю, или есть другой способ?
Например, я хотел бы иметь возможность найти следующую аннотацию в классе:
/** * @MyParam: myvalue */
Вы можете сделать это, используя ReflectionClass::getDocComment
, например:
function getClassAnnotations($class) { $r = new ReflectionClass($class); $doc = $r->getDocComment(); preg_match_all('#@(.*?)\n#s', $doc, $annotations); return $annotations[1]; }
Демо-версия: http://codepad.viper-7.com/u8bFT4
Вы можете получить блок комментариев, используя метод объекта refDocComment Reflection.
Если вы не хотите получать аннотацию вручную, вы можете использовать Zend Framework Reflection или другое существующее решение