#php #error-handling #warnings #isset
#php #обработка ошибок #предупреждения #иссет
Вопрос:
Итак, похоже, что они изменили способ доступа к массиву с неизвестным ключом, вызывающим сообщение.
lt;?php if($myArray['foo']) { ... }
В течение 25 лет это просто привлекало ВНИМАНИЕ, и люди были вполне счастливы замолчать E_NOTICE
php.ini
. С (я думаю) PhP 8.0 это вызывает теперь ПРЕДУПРЕЖДЕНИЕ.
По понятным причинам я не хочу молчать E_WARNING
, поэтому мне (и всем остальным миром, которые в течение многих лет использовать неинициализированные переменные, а их значения было просто null
, как во многих других интерпретируемый язык) было искать возможный способ избавиться от предупреждения, связанные с неопределенных переменных/массивов/ключи и в то же время сообщается всех других (более серьезных) программной ошибки, как в том числе не существующий файл.
Причина этого вопроса в том, что мне приходится иметь дело с тоннами кода, написанного с учетом вышеприведенного шаблона; Я просто не могу переписать все это, но все равно мне нужно переключиться на PhP 8, так что нет, я не спрашиваю, как использовать isset()
.
Комментарии:
1. Я так не думаю. Нет способа отфильтровать сообщения по определенным типам, у вас просто разные категории ошибок.
2. Возможно , вы не спрашиваете, как использовать
isset()
, но это, безусловно, один из способов профессионального решения вашей проблемы XY. PHP8 помогает разработчикам прекратить писать плохой код еще на 25 лет.3. может быть , подумайте о том, чтобы не показывать
ini_set('display_errors', 'Off');
, а регистрировать ошибки.ini_set('log_errors', 'On');
. регистрируйте все:ini_set('error_reporting', E_ALL );
4. @berend, пожалуйста, перечитайте название вопроса. Могу ли я скрыть предупреждение PHP: Неопределенный ключ массива, не подавляя все остальные предупреждения ?
5. Урок в том, что вы тоже не должны были игнорировать уведомления все это время.