Могу ли я скрыть предупреждение PHP: Неопределенный ключ массива, не подавляя все остальные предупреждения?

#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. Урок в том, что вы тоже не должны были игнорировать уведомления все это время.