首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >debug_backtrace -长参数

debug_backtrace -长参数
EN

Stack Overflow用户
提问于 2014-03-04 19:10:03
回答 2查看 996关注 0票数 0

我的职能如下:

代码语言:javascript
复制
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)中给出

是什么导致了这个错误?我怎么才能修好它?

EN

回答 2

Stack Overflow用户

发布于 2014-03-04 19:15:41

debug_backtrace()的第一个参数是选项的位掩码(即long)。在5.3.6之前的PHP版本中,它是一个简单的布尔型true/false

要修复它,要么不传入当前传入的$Object变量,要么将其更新为要使用的受支持选项的任何组合。

示例:

代码语言:javascript
复制
$Object = DEBUG_BACKTRACE_IGNORE_ARGS | DEBUG_BACKTRACE_PROVIDE_OBJECT;

如果要向当前代码块添加预条件(如果$Object无效将设置默认值),则可以尝试以下操作:

代码语言:javascript
复制
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;
}
票数 1
EN

Stack Overflow用户

发布于 2014-03-04 19:17:46

对于php >= 5.3.6,您应该使用位掩码选项

代码语言:javascript
复制
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;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22180793

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档