Есть ли хороший (автономный) класс анализатора 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

[3] - http://mwop.net/blog/125-PHP-5s-Reflection-API

Я написал утилиту документирования PHP во время выполнения, которая содержит класс синтаксического анализатора PHPDoc ( Doqumentor). Я думаю, что это будет делать то, что вы хотите, если вы хотите посмотреть. Он также доступен на github, если у вас есть какие-либо улучшения или исправления ошибок.

Интересно, не могли бы вы просто использовать классы phpdocumentor. Они уже разбирают данные. Я подозреваю, что вы могли бы написать свой собственный временный анализатор для обработки файла, но затем обрабатывать необработанные объекты любым удобным для вас способом.

PHPDocumentor - это автономный анализатор докблока.

Другие вопросы по тегам