# php_aop_programming **Repository Path**: horsezone/php_aop_programming ## Basic Information - **Project Name**: php_aop_programming - **Description**: PHP切面编程微框架 - **Primary Language**: PHP - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 3 - **Forks**: 1 - **Created**: 2017-11-14 - **Last Updated**: 2021-05-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 一. 文档目录 1. PHP注释的另一种使用方式 2. 切面监控接入指南 3. 切面框架评测 ## 二. 开场白 ``` 在日常的编码中,常常需要监控某一段程序的健康状态(记录请求数、执行参数以及结果),以此来判断程序是否正常运行 但是反复地在核心逻辑中植入这些非核心的逻辑,会导致核心逻辑会随着程序复杂而愈来愈难于解读与维护 倘若这些非核心的逻辑能够写入注释中,那 么我们就能更加专注于我们的核心逻辑,即使注释出错也不会影响核心逻辑的运行 那么,下面就让我来介绍一下PHP注释的另一种使用方式:通过注释来追踪程序的执行状况 ``` ## 三. 效果演示 ``` 请执行项目根目录的 index.php,查看当前目录下的tmp目录 会多出 example_info文件,点击查看内容,结构字段及其含义如下 { "execute_flag":"before", //执行顺序标识。before-在目表方法之前执行,after-在目标方法之后执行 "class_name":"aop\example\ExampleTwoClass", //目标函数所在的类名 "method_name":"returnAny", //执行的目标方法名称 "method_param":["namespace_and_object"], //实参的具体值 "param_rule":"", //跟踪参数规则 "param_name_list":["data"], //实参名称列表 "method_result":null, //目标方法返回结果 "is_replace":false //是否替换目标方法逻辑 } ``` ## 四.使用方式 > 引入 `example/aop_index.php` > 书写非核心逻辑(日志逻辑、缓存逻辑等) > 将非核心逻辑配置在 `config/AOPAbstractConfig` 中 > 调用 `_bind(核心逻辑所在类的命名空间名称,核心逻辑方法名[,核心逻辑参数列表])` 方法 > 在核心逻辑方法上书写标注注释(可以参考`example/ExampleOneClass.php`) ## 五.注释注释标记 ``` @before(监控逻辑所在类名, 监控逻辑方法名[, 参数规则]) @after(监控逻辑所在类名, 监控逻辑方法名[, 参数规则]) @replace(替代逻辑所在类名, 替代逻辑方法名[, 参数规则]) //可用于缓存设置及存储 @interpret(中断逻辑所在类名, 中断逻辑方法名, 参数规则) //配合@replace可实现缓存设置及存储 ```