Как получить комментарии функций класса php? - PullRequest
0 голосов
/ 19 октября 2011

Мне нужно получить комментарий о конкретной функции в классе php, например:

/* Some commets for a class */
class Foo extends Bar {
    function __construct() {}

    // a single line comment to the function foo()
    function foo() {}

    /* a multi-line comment
    to the function bar() */
    public static function bar() {}

}

Да, я знаю, что это легко сделать с помощью ReflectionMethod-> getDocComment (), но у меня это не работает, потому что я использую eAccelerator и обрезает все комментарии из кода, так что getDocComment всегда возвращает FALSE.

Я тоже не хочу перекомпилировать eAccelerator:)

Мне нужна такая функция:

function get_function_comment($class_contents, $function_name) {}

чтобы я возвращал комментарий функции, $ class_contents - это переменная, которая хранит содержимое класса, как в примере выше.

Я пытался сделать это сам, но не могу создать правильное регулярное выражение ..

Пожалуйста, помогите мне:)

Ответы [ 2 ]

1 голос
/ 19 октября 2011

О, чувак, я почти чувствую себя грязным из-за написания этого регулярного выражения, но это может сработать (не проверял, так что не верьте моему слову).

preg_match('#(//.*$|/\*.*\*/)\s*$[\s\w]*function\s+$function_name\b#Usmi', $class_contents, $result);

Теоретически это работает так:

  • Найти либо:
    • // и все до конца этой строки ИЛИ
    • / *, тогда все до * /
  • Затем съешьте все пробелы до конца строки
  • Берите любое количество пробелов или слов в следующей строке до тех пор, пока вы не нажмете «функция», какой-нибудь пробел, затем полное имя функции, которое хотите.

На практике: «Некоторые люди, сталкиваясь с проблемой, думают:« Я знаю, я буду использовать регулярные выражения. «Теперь у них есть две проблемы».

0 голосов
/ 19 октября 2011

Попробуйте использовать правильные комментарии phpDoc:

/**
 * Something explaining this
 *
 * @return string
 */
function foo(){  }
...