自行实现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
在此摘录其演示代码如下:
<?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();
通过这种特性,可以实现注解的方式指定方法的url路由模式 /index/index
转载于:https://www.cnblogs.com/x3d/p/php-annotations.html
自行实现PHP代码注解特性相关推荐
- 图网络笔记-知识补充与node2vec代码注解
主要引入基本的同构图.异构图知识以及基本概念:同时对deepWalk代码的注解以及node2vec.word2vec的说明总结:(以及作业代码注解) 一.图基础及分类 1.1 什么是图? 用一张图表示 ...
- 百度图神经网络——论文节点比赛baseline代码注解
文章目录 一.项目介绍 二.BaseLine内容注解 1.Config部分注解 2. 数据读取与处理部分 2.1 边数据的加载与处理 2.2 数据的完整加载与处理 2.3 数据读取与分割 3. 模型加 ...
- 7.10 数据注解特性--NotMapped
NotMapped特性可以应用到领域类的属性中,Code-First默认的约定,是为所有带有get,和set属性选择器的属性创建数据列.. NotManpped特性打破了这个约定,你可以使用NotMa ...
- UNIX-LINUX编程实践教程-第八章-实例代码注解-写一个简单的shell
一 分析 要实现一个shell,需包含3个步骤 1)读入指令 2)指令解析 3)执行指令 1 从键盘读入指令 从键盘读入指令的几个要点: 1)调用getc函数等待并获取用户键盘输入. 2)每一行命令的 ...
- 基于TensorFlow的MTCNN人脸检测算法(生成PNet的人脸关键点数据 代码注解)
代码源自Github:https://github.com/AITTSMD/MTCNN-Tensorflow 该阶段代码取自 Git主 代码目录下 MTCNN-Tensorflow-master / ...
- 吴恩达《机器学习》课后测试Ex2:逻辑回归(详细Python代码注解)
基于吴恩达<机器学习>课程 参考黄海广的笔记 import numpy as np import pandas as pd import matplotlib.pyplot as plt ...
- Android 自定义控件,模仿小米秒表样式的时钟,完整代码注解
一个模仿小米手机秒表样式的安卓小应用程序,利用自定义控件实现. 超详细的代码注释 开发工具为:Android Studio 看图 代码: 大表盘自定义控件:[xiaomiClock ] public ...
- HTML初始代码 注解
HTML初始代码解析 <!DOCTYPE html> <!-- 告诉浏览器这是一个html文件 --> <html lang="en"> < ...
- Hinton关于RBM的代码注解之(一)rbm.m
这个是Hinton关于RBM的pre-training的代码. 源代码网址:http://www.cs.toronto.edu/~hinton/MatlabForSciencePaper.html % ...
- 在MAC下调试运行暗黑世界客户端及部分代码注解(基于Firefly)
目前有两个客户端,一个基于cocos2d-x.一个基于unity3d,这两个客户端的调试运行官网也有相关教程,我这是基于我自己的mac环境调试运行的. 一.先是基于coco2d-x的客户端 1.最快的 ...
最新文章
- Exchange 2010正式发布了
- AI芯片大战已然打响,国内外巨头抢占万亿智能家居市场
- 9月往后推6个月是几月_成考每年一般几月份颁发毕业证书
- 200多个js技巧代码(4)
- 大众可视化:精美酷炫的可视化图表,自动生成!
- 第二关练习题总结完结
- w7系统计算机e盘无法打开,Win7电脑磁盘打不开怎么办
- 华三服务器收集系统日志,Rsyslog+H3C日志系统(示例代码)
- 给开发者准备的 10 款最好的 jQuery 日历插件
- 强制 转换string 的一个简单方法(笔记)
- 跳槽的5个误区,冷静一下
- Windows可视化编程C++基础知识
- 五分钟上手ECharts教程
- 驱动精灵显示服务器去火星了,“用驱动精灵发现不了声卡,设备管理器上面正常”的解决方案...
- Protobuf协议格式详解
- 不可错过的《一步一步学Spring Boot》视频教程
- AMD锐龙R3 5400U性能怎么样?相当于什么水平级别
- 流年暗换,是什么偷走了我们的爱情
- 几种比较好看的颜色代码
- [转载]雅礼中学2012届高三年级第三次阶段考试试卷
热门文章
- 【Django 2021年最新版教程24】循环得到2个日期之间的所有日期
- Mac 安装 python brew
- php x不能转移,[PHP] 从 PHP 5.3.X 迁移到 PHP 5.6.X不兼容点
- JDBC02 加载JDBC驱动 建立连接
- 在maven中做ssm整合
- 2021-03-14
- c语言荷兰国旗问题算法,荷兰国旗问题
- php二维数组根据某个字段排序的排序(商品按销量或其他字段排序)
- php案例之后台数据显示-- mysqli面向过程版(procedure oriented programming = POP)
- podman 在 windows 安装