自行实现PHP代码引文特性
Jun 13, 2016 pm 12:19 PM
自行实现PHP代码注解特性
PHP 注解
到目前为止,PHP的反射特性中是不支持注解Annotation的,但是可以支持基本的文档注释内容的获取 ReflectionMethod::getDocComment() - 从5.1.0开始 。PHP的反射其实已经挺强大的了,只要再进一步,解析文档注释中的相关注解内容即可。
AppServer.io 提供了一个lang库,实现了对注解的支持。其中还运用了PHP的Tokenizer特性来解析注解代码,具体原理不详述,有兴趣自行阅读代码。
https://github.com/appserver-io/lang
其关于注解的说明见:http://appserver.io/get-started/documentation/annotations.html
在此摘录其演示代码如下:
<code><?phpnamespace Namespace\Module;use AppserverIo\Appserver\Lang\Reflection\ReflectionClass;use AppserverIo\Appserver\Lang\Reflection\ReflectionAnnotation;class Route extends ReflectionAnnotation{ /** * Returns the value of the name attribute. * * @return string The annotations name attribute */ public function getPattern() { return $this->values['pattern']; }}class IndexController{ /** * Default action implementation. * * @return void * @Route(pattern="/index/index") */ public function indexAction() { // do something here }}// create a reflection class to load the methods annotation $reflectionClass = new ReflectionClass('IndexController');$reflectionMethod = $reflectionClass->getMethod('indexAction');$reflectionAnnotation = $reflectionMethod->getAnnotation('Route');$pattern = $reflectionAnnotation->newInstance()->getPattern();</code>
登录后复制
通过这种特性,可以实现注解的方式指定方法的url路由模式 /index/index
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门文章
仓库:如何复兴队友
3 周前
By 尊渡假赌尊渡假赌尊渡假赌
击败分裂小说需要多长时间?
3 周前
By DDD
Hello Kitty Island冒险:如何获得巨型种子
3 周前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 周前
By 尊渡假赌尊渡假赌尊渡假赌
公众号网页更新缓存难题:如何避免版本更新后旧缓存影响用户体验?
3 周前
By 王林

热门文章
仓库:如何复兴队友
3 周前
By 尊渡假赌尊渡假赌尊渡假赌
击败分裂小说需要多长时间?
3 周前
By DDD
Hello Kitty Island冒险:如何获得巨型种子
3 周前
By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 周前
By 尊渡假赌尊渡假赌尊渡假赌
公众号网页更新缓存难题:如何避免版本更新后旧缓存影响用户体验?
3 周前
By 王林

热门文章标签

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)