如何在PHP5对象中查找注释?
我希望能够在PHP5对象中实现自定义注释,并且希望通过构建自己的解析器来了解整个过程是如何工作的 不过,首先,我需要知道如何找到注释 是否有我缺少的反射方法,或者有其他方法 例如,我希望能够在类中找到以下注释:如何在PHP5对象中查找注释?,php,parsing,annotations,docstring,Php,Parsing,Annotations,Docstring,我希望能够在PHP5对象中实现自定义注释,并且希望通过构建自己的解析器来了解整个过程是如何工作的 不过,首先,我需要知道如何找到注释 是否有我缺少的反射方法,或者有其他方法 例如,我希望能够在类中找到以下注释: /** * @MyParam: myvalue */ 可以使用反射对象方法获取注释块 如果您不想手动检索注释,可以使用或其他现有解决方案您可以使用,例如: function getClassAnnotations($class) { $r = new Refl
/**
* @MyParam: myvalue
*/
可以使用反射对象方法获取注释块 如果您不想手动检索注释,可以使用或其他现有解决方案您可以使用,例如:
function getClassAnnotations($class)
{
$r = new ReflectionClass($class);
$doc = $r->getDocComment();
preg_match_all('#@(.*?)\n#s', $doc, $annotations);
return $annotations[1];
}
实时演示:如果文件中有多个注释,它会将它们全部捕获吗?
->getDocComment()
只获取与正在检查的对象关联的文档注释(该对象声明之前的docblock注释)。您还可以获取对象、类、方法、函数和属性的文档注释。@johnnietheblack您可以使用-仅获取指定方法的注释。啊,太酷了…因此我可以使用ReflectionClass获取类的文档注释,然后运行它的方法以获取它们的注释…@johnnietheblack您可以使用循环类方法返回ReflectionMethod对象数组,您可以使用它来获取函数注释。为什么不使用类似于doctrine注释的库呢?是最popular@DanFromGermany,原则\Common\Annotations\AnnotationReder::getClassAnnotations()
似乎明确忽略了@package
和@method
之类的内容。我还从未见过如此多的private
和final
的用法阻止任何可能超越此限制的行为。有办法解决这个问题吗?