php发展

首页 » 常识 » 诊断 » 3分钟短文PHP获取函数的代码片段,唯有
TUhjnbcbe - 2022/11/20 21:13:00

引言

为了演示我们所说的PHP中反射的应用,本篇接着讲反射的应用。因为其特性,是操作函数和方法的,是函数的操作者,类的操作者,所以显得格外重要。

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

functionblah($a,$b){return$a*$b;}echogetFunctionCode(blah);

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

学习时间

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

我们需要借助ReflectionFunction用于获取函数的基本信息,比如文件名,开始和结束的行数等等,直接上代码:

$func=newReflectionFunction(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所在的行,就是了!

实测

我们使用Laravel7框架内,添加一个助手函数如下:

也就是格式化日期字符串。此函数在

1
查看完整版本: 3分钟短文PHP获取函数的代码片段,唯有