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代码注解特性相关推荐

  1. 图网络笔记-知识补充与node2vec代码注解

    主要引入基本的同构图.异构图知识以及基本概念:同时对deepWalk代码的注解以及node2vec.word2vec的说明总结:(以及作业代码注解) 一.图基础及分类 1.1 什么是图? 用一张图表示 ...

  2. 百度图神经网络——论文节点比赛baseline代码注解

    文章目录 一.项目介绍 二.BaseLine内容注解 1.Config部分注解 2. 数据读取与处理部分 2.1 边数据的加载与处理 2.2 数据的完整加载与处理 2.3 数据读取与分割 3. 模型加 ...

  3. 7.10 数据注解特性--NotMapped

    NotMapped特性可以应用到领域类的属性中,Code-First默认的约定,是为所有带有get,和set属性选择器的属性创建数据列.. NotManpped特性打破了这个约定,你可以使用NotMa ...

  4. UNIX-LINUX编程实践教程-第八章-实例代码注解-写一个简单的shell

    一 分析 要实现一个shell,需包含3个步骤 1)读入指令 2)指令解析 3)执行指令 1 从键盘读入指令 从键盘读入指令的几个要点: 1)调用getc函数等待并获取用户键盘输入. 2)每一行命令的 ...

  5. 基于TensorFlow的MTCNN人脸检测算法(生成PNet的人脸关键点数据 代码注解)

    代码源自Github:https://github.com/AITTSMD/MTCNN-Tensorflow 该阶段代码取自 Git主 代码目录下 MTCNN-Tensorflow-master / ...

  6. 吴恩达《机器学习》课后测试Ex2:逻辑回归(详细Python代码注解)

    基于吴恩达<机器学习>课程 参考黄海广的笔记 import numpy as np import pandas as pd import matplotlib.pyplot as plt ...

  7. Android 自定义控件,模仿小米秒表样式的时钟,完整代码注解

    一个模仿小米手机秒表样式的安卓小应用程序,利用自定义控件实现. 超详细的代码注释 开发工具为:Android Studio 看图 代码: 大表盘自定义控件:[xiaomiClock ] public ...

  8. HTML初始代码 注解

    HTML初始代码解析 <!DOCTYPE html> <!-- 告诉浏览器这是一个html文件 --> <html lang="en"> < ...

  9. Hinton关于RBM的代码注解之(一)rbm.m

    这个是Hinton关于RBM的pre-training的代码. 源代码网址:http://www.cs.toronto.edu/~hinton/MatlabForSciencePaper.html % ...

  10. 在MAC下调试运行暗黑世界客户端及部分代码注解(基于Firefly)

    目前有两个客户端,一个基于cocos2d-x.一个基于unity3d,这两个客户端的调试运行官网也有相关教程,我这是基于我自己的mac环境调试运行的. 一.先是基于coco2d-x的客户端 1.最快的 ...

最新文章

  1. Exchange 2010正式发布了
  2. AI芯片大战已然打响,国内外巨头抢占万亿智能家居市场
  3. 9月往后推6个月是几月_成考每年一般几月份颁发毕业证书
  4. 200多个js技巧代码(4)
  5. 大众可视化:精美酷炫的可视化图表,自动生成!
  6. 第二关练习题总结完结
  7. w7系统计算机e盘无法打开,Win7电脑磁盘打不开怎么办
  8. 华三服务器收集系统日志,Rsyslog+H3C日志系统(示例代码)
  9. 给开发者准备的 10 款最好的 jQuery 日历插件
  10. 强制 转换string 的一个简单方法(笔记)
  11. 跳槽的5个误区,冷静一下
  12. Windows可视化编程C++基础知识
  13. 五分钟上手ECharts教程
  14. 驱动精灵显示服务器去火星了,“用驱动精灵发现不了声卡,设备管理器上面正常”的解决方案...
  15. Protobuf协议格式详解
  16. 不可错过的《一步一步学Spring Boot》视频教程
  17. AMD锐龙R3 5400U性能怎么样?相当于什么水平级别
  18. 流年暗换,是什么偷走了我们的爱情
  19. 几种比较好看的颜色代码
  20. [转载]雅礼中学2012届高三年级第三次阶段考试试卷

热门文章

  1. 【Django 2021年最新版教程24】循环得到2个日期之间的所有日期
  2. Mac 安装 python brew
  3. php x不能转移,[PHP] 从 PHP 5.3.X 迁移到 PHP 5.6.X不兼容点
  4. JDBC02 加载JDBC驱动 建立连接
  5. 在maven中做ssm整合
  6. 2021-03-14
  7. c语言荷兰国旗问题算法,荷兰国旗问题
  8. php二维数组根据某个字段排序的排序(商品按销量或其他字段排序)
  9. php案例之后台数据显示-- mysqli面向过程版(procedure oriented programming = POP)
  10. podman 在 windows 安装