saberyjs / annotation
这个库解析PHP注释
Requires
- php: >=5.6
- saberyjs/exception: ^1
This package is auto-updated.
Last update: 2024-09-05 13:40:24 UTC
README
如果你使用过PHP的ReflectionClass
或ReflectionMethod
,你会找到一个名为getDocComment
的方法,这意味着我们可以获取指定类(及其方法)的注释,因此我们可以对其进行一些操作。你还记得Java Web的注解吗?这是一个强大的开发工具,但这个库并不完全如此,它只是解析注释,因为我们永远不知道你想要做什么,对吧?
如何使用
这个库支持两种功能,如下
获取文档注释
首先我们假设有一个名为Student的类
class Student{ /** * @type post * @https true * **/ public function getName(){ return ''; } }
$doc=\saberyjs\annotation\Annotation::getAnnotation();
Annotation::getAnnotation() 返回一个原始字符串
解析注释
在我们进入实际代码之前,我们必须了解一个名为解析器的概念,每种类型的解析器都必须实现一个名为Parser
的接口,这个接口非常简单,我会给你展示代码
namespace saberyjs\annotation; interface Parser { /** * @param $doc string * @return array|null * **/ public function parse($doc); }
每个解析器都必须实现parse
方法,这是唯一的方法,这个库有两个内部解析器,StandardAnnotationParser
和PlainAnnotationParser
,当然,你可以在任何时候编写自己的解析器(必须实现Parser
接口)。如果你使用StandardAnnotationParser,代码如下
$doc=\saberyjs\annotation\Annotation::getAnnotation(Student::class); $parser=new \saberyjs\annotation\StandardAnnotationParser(); $parts=\saberyjs\annotation\Annotation::parseAnnotation($doc,$parser);
如果你记得名为Student
的类,你会发现它有一个名为getName
的方法,该方法有一些注释,我们在这里粘贴它
/** * @type post * @https true * **/
因此,在调用Annotation::parseAnnotation
方法并使用StandardAnnotationParser之后,你将得到一个数组,其格式如下
$ret=[[ 'name'=>'type', 'value'=>'post' ],[ 'name'=>'https', 'value'=>'true' ] ];
你可以用任何你想要的方式使用$ret,如果你对它感兴趣,你可以阅读名为thinkphp5-route-helper
的composer包
联系方式
我是一名在中国深圳的PHP开发者,如果你也喜欢开源,你可以联系我,我的QQ是1174332406
最后但同样重要的是,祝你有个美好的一天!!