如何获取php类函数的注释?

时间:2011-10-19 15:39:42

标签: php reflection comments eaccelerator

我需要在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 个答案:

答案 0 :(得分:1)

哦,伙计,我写这个正则表达式几乎感觉很脏,但是这可能就行了(没有测试过,所以不要理我的话)。

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

理论上,它的作用如下:

  • 找到:
    • //以及直到该行结尾的所有内容或
    • / *,然后是* /
    • 之前的所有内容
  • 然后吃掉所有的空白直到行尾
  • 在下一行中获取任意数量的空格或单词字符,直到您点击“function”,一些空白,然后是您想要的整个函数名称。

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

答案 1 :(得分:0)

尝试使用正确的phpDoc评论:

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