首页 » Web前端 » php获取函数技巧_3分钟短文 PHP获取函数的代码片段唯有反射最高效

php获取函数技巧_3分钟短文 PHP获取函数的代码片段唯有反射最高效

访客 2024-10-29 0

扫一扫用手机浏览

文章目录 [+]

我们从一个小需求出发,假如有一段这样的代码:

function blah($a, $b) { return $a$b; }echo getFunctionCode("blah");

当然 getFunctionCode函数本身在PHP中是不存在的,这里是伪代码。
有没有可能,根据函数名,获取函数的内部代码呢?

php获取函数技巧_3分钟短文  PHP获取函数的代码片段唯有反射最高效

学习韶光

这个您真得拿好小本本记好了,非常田主要。
这个功能如果是做全局的文档,可能非常实用。
天生的文档,自动把函数的内部方法写出来,作为代码示例,实时修正,实时生效。

php获取函数技巧_3分钟短文  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 框架内,添加一个助手函数如下:

也便是格式化日期字符串。
此函数在 composer 勾引加载的时候,会全局有效。

为了测试,在 Commands 内添加临时指令,为了方便调试,利用 $this->info 输出信息:

命令行实行后输出内容如下:

与预想的结果同等。

写在末了

本文通过PHP供应的ReflectionFunction,将全局定义的函数,可以通过获取其绝对路径名,起始和结束行数,将函数的代码段打印出来。
可以说是非常高阶而实用了。

Happy coding :-)

我是 @程序员小助手 ,持续分享编程知识,欢迎关注。

标签:

相关文章

QQ伪装黑客代码大全技术与风险警示

网络安全问题日益凸显。QQ作为一种流行的社交工具,成为了黑客攻击的主要目标之一。本文将针对QQ伪装黑客代码大全进行深入剖析,揭示其...

Web前端 2025-03-02 阅读1 评论0