首页 > 其他 > 详细

查看闭包函数的函数体

时间:2016-04-22 18:08:20      阅读:158      评论:0      收藏:0      [点我收藏+]

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

 

查看闭包函数的函数体

原文:http://www.cnblogs.com/coder5/p/5422170.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!