2014-03-04 2 views
0

나는 다음과 같은 기능이 있습니다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['function']; 
     $row[$x]['class'] = $aVal['class']; 
     $row[$x]['args']  = $aVal['args']; 
     ++$x; 
    } 
    return $row; 
} 

을하지만 그것을 사용할 때, 나는 오류 아래와 같이 받고 있어요 :

경고 :) (debug_backtrace는에 매개 변수 1을 기대한다 긴 줄,/mypath/줄 717 줄 ---> foreach (배열) debug_backtrace ($ Object) $ aVal)

오류의 원인은 무엇입니까? 어떻게 해결할 수 있습니까?

+0

수동 읽어했다 : http://pl1.php.net/debug _ 백 추적? 5.3.6부터 첫 번째 매개 변수는 비트 마스크입니다. – ziollek

답변

1

debug_backtrace()의 첫 번째 매개 변수는 옵션의 비트 마스크입니다 (예 : long). PHP 5.3.6 이전 버전에서는 간단한 부울 true/false입니다.

현재 수정하고자하는 변수 $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; 
} 
: 당신이 $Object가 무효 인 경우 기본 값을 설정하는 코드의 현재 블록에 사전 조건을 추가하려면

$Object = DEBUG_BACKTRACE_IGNORE_ARGS | DEBUG_BACKTRACE_PROVIDE_OBJECT; 

것은, 당신이 뭔가를 시도 할 수 PHP> = 5.3.6에 대한

0

, 당신은 옵션

을 비트 마스크를 사용해야합니다
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; 
} 
관련 문제