PHP 8.4: Константа E_STRICT объявлена устаревшей
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:
htmlentitiesmysqli_next_resultmysqli_stmt_next_result
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, чтобы избежать уведомления об устаревании.