如何获取php类函数';评论?
我需要获取php类中特定函数的注释,例如:如何获取php类函数';评论?,php,reflection,comments,eaccelerator,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
/* 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
请帮助我:)尝试使用适当的phpDoc注释:
/**
* Something explaining this
*
* @return string
*/
function foo(){ }
哦,老兄,我几乎为写这个正则表达式感到肮脏,但这可能会奏效(还没有测试过,所以不要相信我的话) 理论上,它的工作原理如下:
- 查找以下任一项:
- //直到那条线的尽头
- /*,然后所有的事情直到*/
- 然后吃掉所有的空格直到行尾
- 在下一行输入任意数量的空格或单词字符,直到您点击“函数”,一些空格,然后是您想要的整个函数名
实际上:“有些人在遇到问题时,会想“我知道,我会使用正则表达式。”现在他们有两个问题我不认为一个正则表达式就能解决这个问题。你不可能编写一个实现整个PHP语法分析器的正则表达式……如果这是可能的话,就不会有太多的麻烦,将是执行此操作的方法。
getDocComment
只返回解析器认为是T\u DOC\u COMMENT
的特定格式的注释。它不会返回其他注释。实际上,当类也有注释时,这不起作用。如下所示:`/**CMS用户管理*/``class Adminusers扩展了模块{``}`,因此它将从类内容开头的文本返回到所需的函数名。但我只需要函数的注释:)使用什么注释并不重要。无论如何,每个加速器都会切断它。
preg_match('#(//.*$|/\*.*\*/)\s*$[\s\w]*function\s+$function_name\b#Usmi', $class_contents, $result);