淄博想建网站,wordpress短链接,做网络销售怎么样,网站建设 移动端引言为了演示上一篇我们所说的PHP中反射的应用#xff0c;本篇接着讲反射的应用。因为其特性#xff0c;是操作函数和方法的#xff0c;是函数的操作者#xff0c;类的操作者#xff0c;所以显得格外重要。我们从一个小需求出发#xff0c;假如有一段这样的代码#xff…引言为了演示上一篇我们所说的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 框架内添加一个助手函数如下也就是格式化日期字符串。此函数在 composer 引导加载的时候会全局有效。为了测试在 Commands 内添加临时指令为了方便调试使用 $this-info 输出信息命令行执行后输出内容如下与预想的结果一致。写在最后本文通过PHP提供的ReflectionFunction将全局定义的函数可以通过获取其绝对路径名起始和结束行数将函数的代码段打印出来。可以说是非常高阶而实用了。Happy coding :-)我是 程序员小助手 持续分享编程知识欢迎关注。