Проблемы старого кода на PHP 8.4 — кто с чем столкнулся?
Переехал недавно на PHP 8.4, и сразу нарвался на кучку неприятностей со старым кодом. Основные больные места — функции, которые устарели или изменили поведение. Например, предупреждения из-за устаревших функций, которые в прежних версиях молча игнорировались, а теперь фатально срабатывают. Ещё добавились нюансы с типизацией — прежний код часто будто не рассчитан на строгие типы, теперь ловит ошибки, где раньше тихо проходил.
Если коротко, что проверить в первую очередь:
1) Deprecated функции — полезно глянуть список и сразу заменить.
2) Обработка ошибок и исключений — надеяться, что старый код «прокатит», не стоит.
3) Типизацию в функциях, особенно если раньше её не было вообще.
4) Вызовы функций с переменным числом аргументов — в 8.4 их поведение стало строже.
5) Работа с массивами и строками — могут появиться неожиданные предупреждения.
Из своего опыта — полезно запустить код с максимально строгим уровнем ошибок и отслеживать логи, это сразу выдает, что надо переписать или хотя бы откорректировать. Иногда помогает постепенный рефакторинг, если проект большой и сразу переделать весь код невозможно.
Кто какие еще подводные камни заметил при переходе? Есть ли проверенные трюки, чтобы быстро отловить потенциальные несовместимости?
У меня с переходом на 8.4 тоже пошли предупреждения там, где раньше всё тихо проходило. Особенно раздражает, когда типы стали жёстче проверяться — куча мелочей вылезает, если раньше не заморачивался с ними. Полезно сразу включить полный отчёт об ошибках, чтобы ловить всё с самого начала, иначе потом будет больно.