Php debug_backtrace-long参数
我有以下功能:Php debug_backtrace-long参数,php,debug-backtrace,Php,Debug Backtrace,我有以下功能: function backtrace($Object=false) { $x = 0; foreach((array)debug_backtrace($Object) as $aVal) { $row[$x]['file'] = $aVal['file']; $row[$x]['line'] = $aVal['line']; $row[$x]['function'] = $aVal['func
function backtrace($Object=false)
{
$x = 0;
foreach((array)debug_backtrace($Object) as $aVal)
{
$row[$x]['file'] = $aVal['file'];
$row[$x]['line'] = $aVal['line'];
$row[$x]['function'] = $aVal['function'];
$row[$x]['class'] = $aVal['class'];
$row[$x]['args'] = $aVal['args'];
++$x;
}
return $row;
}
但当我使用它时,我会得到如下错误:
警告:debug_backtrace()要求参数1很长,第717-->foreach((数组)debug_backtrace($Object)作为$aVal)行的/mypath/中给出的字符串
是什么导致了这个错误?如何修复它?的第一个参数是选项的位掩码(即long
)。在5.3.6之前的PHP版本中,它是一个简单的布尔值true
/false
要解决此问题,请不要传入当前传入的$Object
变量,或者将其更新为要使用的受支持选项的任意组合
例如:
$Object = DEBUG_BACKTRACE_IGNORE_ARGS | DEBUG_BACKTRACE_PROVIDE_OBJECT;
如果要在当前代码块中添加一个前提条件,该条件将在$Object
无效时设置默认值,可以尝试以下操作:
function backtrace($Object = false) {
if (!is_long($Object) || (!($Object & DEBUG_BACKTRACE_PROVIDE_OBJECT) && !($Object & DEBUG_BACKTRACE_IGNORE_ARGS))) {
$Object = 0;
}
$x = 0;
foreach((array)debug_backtrace($Object) as $aVal) {
$row[$x]['file'] = $aVal['file'];
$row[$x]['line'] = $aVal['line'];
$row[$x]['function'] = $aVal['function'];
$row[$x]['class'] = $aVal['class'];
$row[$x]['args'] = $aVal['args'];
++$x;
}
return $row;
}
对于php>=5.3.6,应使用位掩码选项
function backtrace($Object=false) {
$x = 0;
foreach((array)debug_backtrace($Object ? DEBUG_BACKTRACE_PROVIDE_OBJECT : 0) as $aVal)
{
$row[$x]['file'] = $aVal['file'];
$row[$x]['line'] = $aVal['line'];
$row[$x]['function'] = $aVal['function'];
$row[$x]['class'] = $aVal['class'];
$row[$x]['args'] = $aVal['args'];
++$x;
}
return $row;
}
你们读过说明书吗?从5.3.6开始,第一个参数是位掩码。