我需要得到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*$[sw]*functions+$function_nameb#Usmi', $class_contents, $result);
理论上,它是这样工作的:
- 找到:
- //或
- /*,然后直到*/
- 然后吃掉所有空格,直到行末
- 在下一行取任意数量的空格或单词字符,直到你点击"function",一些空格,然后是你想要的整个函数名。
在实践中:"有些人在遇到问题时,会想"我知道,我会用正则表达式。"现在他们有两个问题。"
尝试使用适当的phpDoc注释:
/**
* Something explaining this
*
* @return string
*/
function foo(){ }