php打印调用栈函数

有时候(尤其是写日志的时候)我们会需要把当前的调用栈打印出来,以便排查问题。php中有一个函数是干这个事情的,它就是debug_backtrace方法。返回的对象中包含很“丰富”的信息。为方便输出,可将封装成以下方法:

public function getTrace($msg="",$level=3){  
    $traces=debug_backtrace();
    $count=0;
    foreach($traces as $trace)
    {
        if(isset($trace['file'],$trace['line']))
        {
            $msg.="\nin ".$trace['file'].' ('.$trace['line'].')';
            if(++$count>=$level)
                break;
        }
    }
    return $msg;
}

此方法参考自Yii的YiiBase.php中的log方法。