2013-08-21 107 views
1
function errHandle($errNo, $errStr, $errFile, $errLine, $xmlArray) { 
    $msg = "$errStr in $errFile on line $errLine"; 

    if ($errNo == E_NOTICE || $errNo == E_WARNING) { 
     throw new ErrorException($msg, $errNo); 
    } else { 
     echo $msg; 
     echo '<pre>'; 
    print_r($xmlArray); 
    } 
} 

foreach($returnValues as $xmlArray){ 

.... 
.... 
set_error_handler(array($xmlArray, 'errHandle')); 

} 

我可以通過數組作爲參數來errHandle功能。通行證參數來調用的set_error_han dler PHP功能

它顯示的錯誤: 的set_error_han dler()預計參數(的SimpleXMLElement :: errHandle)是在...

整體意向的有效回調是檢查,如果在迭代一個錯誤,然後顯示該數組看到數組內容的功能errHandle

+0

你的意圖很明顯,但是請看看它'set_error_handler'是:http://php.net/set_error_handler - 你首先註冊錯誤處理函數,然後執行你認爲有錯誤的代碼。 – hakre

回答

1

你不能直接這樣做,因爲有錯誤的用戶定義的處理程序嚴格的規定。 如果您正在定義錯誤處理程序,則可以依賴它的上下文 - 該上下文將作爲最後一個參數傳遞,並且將包含當前作用域(即範圍,從中引發錯誤)。這裏有一個例子:

function errHandle($errNo, $errStr, $errFile, $errLine, $errContext) { 
    $msg = "$errStr in $errFile on line $errLine"; 

    if ($errNo == E_NOTICE || $errNo == E_WARNING) { 
     throw new ErrorException($msg, $errNo); 
    } else { 
     echo $msg; 
     echo '<pre>'; 
    print_r($errContext); 
    } 
} 

$xmlArray=['foo'=>'bar']; 
set_error_handler('errHandle'); 

trigger_error('test', E_USER_WARNING); 

,你將能夠通過相應的鍵從參數$errContext訪問$xmlArray(即'xmlArray')。欲瞭解更多信息,請參閱manual page

1

試試這個

set_error_handler(array($this, 'customErrorHandler'));