长沙企业建网站,临沂城市建设网站,建立网站的步骤,资深seo顾问您可以从PHP获得的是有限的,使用反射您只需获取函数的参数签名以及源代码文件的开始和结束行.我曾经写过一篇博客文章#xff1a;http://www.metashock.de/2013/05/dump-source-code-of-closure-in-php/ ……它引导我使用反射以下代码#xff1a;function closure_dump(Closu…您可以从PHP获得的是有限的,使用反射您只需获取函数的参数签名以及源代码文件的开始和结束行.我曾经写过一篇博客文章http://www.metashock.de/2013/05/dump-source-code-of-closure-in-php/ ……它引导我使用反射以下代码function closure_dump(Closure $c) {$str function (;$r new ReflectionFunction($c);$params array();foreach($r-getParameters() as $p) {$s ;if($p-isArray()) {$s . array ;} else if($p-getClass()) {$s . $p-getClass()-name . ;}if($p-isPassedByReference()){$s . ;}$s . $ . $p-name;if($p-isOptional()) {$s . . var_export($p-getDefaultValue(), TRUE);}$params [] $s;}$str . implode(, , $params);$str . ){ . PHP_EOL;$lines file($r-getFileName());for($l $r-getStartLine(); $l $r-getEndLine(); $l) {$str . $lines[$l];}return $str;}如果你有以下关闭$f function (Closure $a, $b -1, array $c array())use ($foo){echo $this-name;echo test;};closure_dump()将给出以下结果function (Closure $a, $b -1, array $c array ()){use ($foo){echo $this-name;echo test;};你看它不完美(数组参数).它也不会正确处理一些边缘情况,特别是如果闭包是嵌套的,或者多个内联闭包将传递给一行中的函数.后者对我来说看起来最成问题.因为,你只得到反射的起始行和结束行,在这种情况下,这两个函数都将在那一行上,你没有任何有用的信息来决定应该转储哪一行.到目前为止,我没有找到解决方案,我也不确定是否有解决方案.但是,在大多数情况下,只要您不依赖它,它至少应该对调试有帮助. Feel free to enhance it!