如何获取php类函数'评论


How to get php class functions' comments?

我需要得到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是一个存储类内容的变量,就像上面的例子一样。

我试着自己做,但我不能创建一个适当的regexp..

请帮帮我:)

哦,天哪,我几乎觉得写这个正则表达式很脏,但这可能会达到目的(还没有测试过,所以不要相信我的话)。

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

理论上,它是这样工作的:

  • 找到:
    • //或
    • /*,然后直到*/
  • 然后吃掉所有空格,直到行末
  • 在下一行取任意数量的空格或单词字符,直到你点击"function",一些空格,然后是你想要的整个函数名。

在实践中:"有些人在遇到问题时,会想"我知道,我会用正则表达式。"现在他们有两个问题。"

尝试使用适当的phpDoc注释:

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