PHP 8.4: Константа E_STRICT объявлена устаревшей

Источник: «PHP 8.4: E_STRICT constant deprecated»
Поскольку все уведомления E_STRICT были преобразованы в E_NOTICE начиная с PHP 8.0, в PHP 8.4 константа E_STRICT объявлена устаревшей.

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

PHP имеет широкий диапазон уровней ошибок, причём константа E_ALL является битовой маской OR всех констант E_, что означает установку сообщения об ошибках или обработчика ошибок для сообщения/обработки всех ошибок, предупреждений и уведомлений.

Одним из уровней ошибок, ранее выдаваемых PHP, был E_STRICT, когда код не был строго корректным, чтобы обеспечить совместимость и дальнейшее развитие. В PHP 7.0 большинство существующих предупреждений E_STRICT были преобразованы в E_NOTICE, а начиная с PHP 8.0 все предупреждения E_STRICT были преобразованы в E_NOTICE.

Поскольку все уведомления E_STRICT были преобразованы в E_NOTICE начиная с PHP 8.0, в PHP 8.4 константа E_STRICT объявлена устаревшей.

error_reporting(E_ALL & ~E_DEPRECATED & ~E_STRICT); // Constant E_STRICT is deprecated

Предлагаемая замена

Ядро PHP и расширения ядра, начиная с PHP 8.0 и более поздних версий, вообще не выдают уведомлений E_STRICT. Можно с уверенностью предположить, что все PHP приложения, работающие на PHP 8.0 и более поздних версиях, никогда не столкнутся с уведомлениями E_STRICT, а отчёты и обработка ошибок могут быть безопасно обновлены для игнорирования уведомлений E_STRICT.

-error_reporting(E_ALL & ~E_DEPRECATED & ~E_STRICT);
+error_reporting(E_ALL & ~E_DEPRECATED);

В PHP 7 до версии PHP 7.4 следующие функции условно выдают уведомления E_STRICT:

PHP приложения, поддерживающие PHP 7.3 или более ранние версии, могут условно вызывать функции error_reporting и set_error_handler с соответствующими уровнями ошибок:

-error_reporting(E_ALL & ~E_DEPRECATED & ~E_STRICT);
+if (PHP_VERSION_ID >= 70400) {
+ error_reporting(E_ALL & ~E_DEPRECATED);
+}
+else {
+ error_reporting(E_ALL & ~E_DEPRECATED & ~E_STRICT);
+}

Изменение значения константы E_ALL

В PHP 8.4 присвоенное значение константы E_ALL изменилось с 32767 на 30719.

Влияние на обратную совместимость

Константа E_STRICT объявлена устаревшей в PHP 8.4. Теперь использование этой константы в любом месте PHP кода приводит к появлению уведомления об устаревании в PHP 8.4 и более поздних версиях.

В PHP 9.0 константа E_STRICT будет удалена.

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

Комментарии


Дополнительные материалы

Предыдущая Статья

git switch и git checkout: В чем разница

Следующая Статья

Градиентный текст с тенью