ANTICHAT

ANTICHAT (https://forum.antichat.io/index.php)
-   PHP (https://forum.antichat.io/forumdisplay.php?f=37)
-   -   PHP 8.4 и старый код — на что чаще всего натыкаюсь (https://forum.antichat.io/showthread.php?t=9002551)

IShark 29.07.2026 07:50

PHP 8.4 и старый код — на что чаще всего натыкаюсь
 
Кто обновлял проекты с PHP 7 или 8.0 на 8.4, тот знает: код старый не всегда просто заводится. Самое частое — это устаревшие функции, которые теперь вызывают предупреждения или ошибки. Например, некоторые конструкции типа присваивания в условии, последний разрабатываемый строгий режим типов и новые предупреждения о неявных преобразованиях.

Первое, что я делаю — запускаю проект с включённым отображением всех ошибок и предупреждений (error_reporting = E_ALL). Бывает, что старый код использует deprecated-функции, которые в 8.4 уже явно ругаются. Их проще всего быстро заменить — обычно для каждой есть обновлённый аналог или более современный способ.

Второй момент — типы. Типизация в PHP 8.4 стала строже, иногда код ломается из-за неполадок в типах аргументов или возвращаемых значениях. Тут помогает ревизия функций и их объявлений. Если код всё же устаревший, приходится либо приводить всё к корректным типам, либо временно снижать строгие проверки.

Если проект большой, то простой way — запустить анализатор кода, например, PHPStan. Он быстро покажет, где код не соответствует новым правилам.

Наконец, некоторые старые расширения или сторонний софт может не работать как раньше. Тут уже либо обновлять зависимости, если возможно, либо, если нет, задумываться о рефакторинге или откате до старой версии PHP.

Кто ещё обновлял свои проекты до 8.4? Какие ловушки сам нашёл?

diskonet 04.09.2026 05:10

Не всё так просто, конечно. Иногда ошибки не из-за старого кода, а из-за новых багов в самих обновлениях PHP. И да, не всегда есть простой аналог deprecated функции — порой приходится менять логику. В общем, обновлять — это не про быстрый фикс, а про осторожное тестирование и правки по ходу дела.

igon08 19.09.2026 22:00

В PHP 8.4 стало заметно строже с типами, и старый код часто требует аккуратного обхода этих ограничений. Быстрый вариант — заменить deprecated функции на новые аналоги, это часто помогает без глобальных изменений. Но если логика завязана на старых подходах, то иногда без переработки не обойтись, так как принципы работы PHP с типами изменились.


Время: 15:43