E_NOTICE: сообщить только неопределенные переменные

Я хотел бы видеть одну ошибку, когда я использую неопределенную переменную, но было бы неплохо избежать других ошибок E_NOTICE, возможно ли это?

0

Решение

Официально я бы рекомендовал не делать этого, так как вполне возможно написать код PHP, который не генерирует никаких предупреждений или уведомлений. На самом деле, это должно быть вашей целью — устранить все уведомления и предупреждения.

Тем не менее, то, что вы спрашиваете, было бы возможно достичь с помощью пользовательской обработки ошибок PHP через set_error_handler(), которая принимает функцию обратного вызова для запуска при возникновении ошибки.

Вы бы определили функцию для сопоставления строк для undefined index а также undefined variable в строке ошибки $errstr параметр обратного вызова. В результате вы фактически отвергаете обычную систему отчетов об ошибках PHP и заменяете свою собственную. Я хотел бы повторить, что я не думаю, что это отличное решение.

$error_handler = function($errno, $errstr, $errfile, $errline) {
if (in_array($errno, array(E_NOTICE, E_USER_NOTICE))) {
// Match substrings "undefined index" or "undefined variable"// case-insensitively. This is *not* internationalized.
if (stripos($errstr, 'undefined index') !== false || stripos($errstr, 'undefined variable') !== false) {
// Your targeted error - print it how you prefer
echo "In file $errfile, Line $errline: $errstr";
}
}
};

// Set the callback as your error handler
// Apply it only to E_NOTICE using the second parameter $error_types
// so that PHP handles other errors in its normal way.
set_error_handler($error_handler, E_NOTICE);

Примечание. Вышеуказанное не является автоматически переносимым для языков, отличных от английского. Но если это только для ваших собственных целей или для ограниченного использования, возможно, это не проблема.

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector