Есть ли хороший (автономный) класс анализатора PHPDoc или функция в PHP?
Я ищу какой-то метод преобразования докблока PHP (который используется для генерации документации такими инструментами, как Doxygen) в структуру, которую я могу проверить в PHP.
Например, я хочу разобрать
/**
* Multiply two values
* @CHECKME
*
* @author someone
* @created eons ago
*
* @param integer $x
* @param integer $x
*
* @return integer
*/
function multiply($x, $y)
{
return $x * $y;
}
в нечто похожее на:
array(
'author' => 'someone'
,'created' => 'eons ago'
,'param' => array(
'integer $x'
,'integer $y'
)
,'_flags' => array(
'@CHECKME'
)
);
Я явно не могу использовать PEAR или любую такую библиотеку, она должна быть относительно автономной. Любое конкретное решение, которое лучше, чем использование набора регулярных выражений после удаления контура комментария, было бы замечательно.
4 ответа
Посмотрите на использование класса Reflection [1] в качестве отправной точки, особенно его метода getDocComment() [2]. Кроме того, сообщение Мэтью в блоге о его набеге на его использование [3] может дать дополнительную информацию.
[1] - http://www.php.net/manual/en/class.reflectionclass.php
[2] - http://www.php.net/manual/en/reflectionclass.getdoccomment.php
Я написал утилиту документирования PHP во время выполнения, которая содержит класс синтаксического анализатора PHPDoc ( Doqumentor). Я думаю, что это будет делать то, что вы хотите, если вы хотите посмотреть. Он также доступен на github, если у вас есть какие-либо улучшения или исправления ошибок.
Интересно, не могли бы вы просто использовать классы phpdocumentor. Они уже разбирают данные. Я подозреваю, что вы могли бы написать свой собственный временный анализатор для обработки файла, но затем обрабатывать необработанные объекты любым удобным для вас способом.