3分钟短文 | PHP获取函数的代码片段,唯有反射最高效!
时间:2022-07-22
本文章向大家介绍3分钟短文 | PHP获取函数的代码片段,唯有反射最高效!,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
引言
为了演示上一篇我们所说的PHP中反射的应用,本篇接着讲反射的应用。因为其特性,是操作函数和方法的,是函数的操作者,类的操作者,所以显得格外重要。
我们从一个小需求出发,假如有一段这样的代码:
function blah($a, $b) { return $a*$b; }
echo getFunctionCode("blah");
当然 getFunctionCode函数本身在PHP中是不存在的,这里是伪代码。有没有可能,根据函数名,获取函数的内部代码呢?
学习时间
这个您真得拿好小本本记好了,非常地重要。这个功能如果是做全局的文档,可能非常实用。生成的文档,自动把函数的内部方法写出来,作为代码示例,实时修改,实时生效。
我们需要借助 ReflectionFunction 用于获取函数的基本信息,比如文件名,开始和结束的行数等等,直接上代码:
$func = new ReflectionFunction('myfunction');
$filename = $func->getFileName();
$start_line = $func->getStartLine() - 1;
$end_line = $func->getEndLine();
$length = $end_line - $start_line;
上述代码假设有一个函数 myfunction,我们获取了 myfunction 所在的文件目录,并且得到了函数开始和结束的行数。
然后可以使用文件操作,将该段代码文本提取出来:
$source = file($filename);
$body = implode("", array_slice($source, $start_line, $length));
print_r($body);
file 函数把整个文件读入到一个数组内,使用 array_slice 切分出 myfunction 所在的行,就是了!
实测
我们使用 Laravel 7 框架内,添加一个助手函数如下:
- iOS开发入门笔记
- Kotlin之基本语法
- Spark SQL在100TB上的自适应执行实践
- Swift 4.0 新特性
- React Native使用Modal自定义分享界面
- android 接入Fabric Crashlytics信息系统
- 干货 | 机器学习在web攻击检测中的应用实践
- 学点vue.js的东西,什么都得学点,面试时说不定对方会问什么
- =>,Es6箭头符号的前世今生
- Crash之防测漏篇
- React Native仿美团下拉菜单
- ES6中提升效率的新方法,多学一点是一点。
- react native仿微信PopupWindow效果
- 积累下素材,明天要讲:javascript的变量和作用域
- php概述
- php教程
- php环境搭建
- PHP书写格式
- php变量
- php常量
- PHP注释
- php数组
- php字符串 string
- PHP整型 integer
- PHP浮点型 float
- php布尔型
- php数据类型之数组
- php数据类型之对象
- php数据类型之null
- php数据类型之间的转换
- php运算符
- php表达式
- PHP循环控制
- PHP流程控制
- php函数
- php全局变量
- PHP魔术变量
- php命名空间
- php 日期
- PHP包含文件
- php文件
- PHP 文件上传
- php Cookies
- php Sessions
- php email
- php安全email
- php错误处理
- PHP异常处理
- php过滤器
- PHP 高级过滤器
- php json
- php 表单
- PHP MySQL 简介
- PHP 连接 MySQL
- php创建数据库
- php 创建表
- php mysq 插入数据
- PHP MySQL 插入多条数据
- PHP MySQL 预处理语句
- php mysql 读取数据
- php mysql where
- PHP MySQL Order By
- PHP MySQL Update
- PHP MySQL Delete
- php ODBC
- python 实现两个npy档案合并
- PHP使用函数用法详解
- 读取nii或nii.gz文件中的信息即输出图像操作
- PHP实现SMTP邮件的发送实例
- 多个Laravel项目如何共用migrations详解
- PHP实现文字写入图片功能
- php中file_get_contents()函数用法实例
- PHP通过GD库实现验证码功能示例
- Thinkphp 5.0实现微信企业付款到零钱
- 使用npy转image图像并保存的实例
- php实现有序数组旋转后寻找最小值方法
- 基于python实现音乐播放器代码实例
- PHP实现微信对账单处理
- Win10下配置tensorflow-gpu的详细教程(无VS2015/2017)
- PHP Include文件实例讲解