的set_error_handler
功能在PHP調用用戶調用一個可調用作爲第一個函數參數。我寫了一個類,在調用這個其他函數之前必須完成一些指令。我寫這樣的:調用調用使用可選參數
$errorCollector = new ErrorCollector();
set_error_handler(
call_user_func_array(
array($errorCollector, 'collect'),
array(function($error) {
//some instructions with $error
}))
);
從$errorCollector
類collect()
函數獲取調用,這需要一個非可選參數,它是一個函數。
的collect()
函數具有其他4個參數,$errno
,$errstr
,$errfile
,和$errline
。這些參數在set_error_handler
函數中填寫錯誤信息。當調用與在set_error_handler
功能這些參數可調用的,你不需要填寫這些
類與功能如下:
class ErrorCollector
{
private $errors;
public function collect(callable $handleError, $errno, $errstr, $errfile, $errline)
{
$error = array(
'number' => $errno,
'string' => $errstr,
'file' => $errfile,
'line' => $errline,
);
$this->errors[] = $error;
call_user_func($handleError, $error);
}
}
當我跑我的一段代碼,我得到以下錯誤:
Warning: Missing argument 2 for ErrorCollector::collect() in C:\ErrorCollector.php on line 13
Warning: Missing argument 3 for ErrorCollector::collect() in C:\ErrorCollector.php on line 13
Warning: Missing argument 4 for ErrorCollector::collect() in C:\ErrorCollector.php on line 13
Warning: Missing argument 5 for ErrorCollector::collect() in C:\ErrorCollector.php on line 13
(縮短了文件的URL爲更好的閱讀)
而參數是可選的第爲什麼我得到這個錯誤e set_error_handler
功能?我可以使用可選參數調用可調用嗎?
'ErrorCollector :: collect'有5個必需的參數。但是你只傳遞一個 - 'array(function($ error){//一些指令帶有$ error}))' – maximkou
@maximkou是的,但是我怎麼讓其他4個可選?因爲這些在'set_error_handler'函數中是可選的。 – Bas
爲參數設置默認值。就像這樣:'公共功能集(可調用$的HandleError,$錯誤號= NULL,$ errstr = NULL,$ ERRFILE = NULL,$ errline = NULL)' – maximkou