爱程序网

查看闭包函数的函数体

来源: 阅读:

在调试的时候 如果遇到了闭包,很想知道具体是那个闭包。可是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;}

 

相关文章列表:
关于爱程序网 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 人才招聘 - 帮助