Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php debug_backtrace-long参数_Php_Debug Backtrace - Fatal编程技术网

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开始,第一个参数是位掩码。