查看闭包函数的函数体 - coder5
程序员文章站
2022-04-15 22:30:10
...
在调试的时候 如果遇到了闭包,很想知道具体是那个闭包。可是ide一般不会显示闭包的函数体。于是从网上抄了个函数用于显示闭包函数的内容
function my_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; }