我的职能如下:
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是长的,字符串在/mypath/行717 ->foreach((数组)debug_backtrace($Object)作为$aVal)中给出
是什么导致了这个错误?我怎么才能修好它?
发布于 2014-03-04 19:15:41
debug_backtrace()的第一个参数是选项的位掩码(即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;
}发布于 2014-03-04 19:17:46
对于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;
}https://stackoverflow.com/questions/22180793
复制相似问题