![]() |
PHP 8.4 и старый код: что ломается сразу и на что глядеть
Кто уже пробовал поднять старые проекты на PHP 8.4? Я собрал для себя пару моментов, которые обычно встают поперёк горла:
- Совсем другая работа с типами. Если в старом коде много неявных преобразований, стоит проверить вызовы функций и методы — там могут вылезти ошибки или предупреждения. - Новые предупреждения и ошибки из-за устаревших функций. Например, mysql_* уже могут быть под вопросом, хотя давно пора мигрировать. - Изменения в сплите строк и регулярках — иногда ломаются парсеры и разные explode/preg_match, особенно, если там был "творческий" код. - Новые правила обработки ошибок и исключений — может быть больше фатальных ошибок, если старый код не ловит их. - Конструкторы теперь строгие с наследованием — если у классов не совпадают сигнатуры, будут предупреждения. - Тонкости с обработкой null и undefined переменных. Там, где раньше просто игнорировалось, теперь может критануть. В общем, что я советую делать: прогонять весь проект через строгий режим с включённым error_reporting, ловить все предупреждения, запускать тесты (если есть). Плюс надо обновить зависимости, так как они тоже могут не дружить с 8.4. А у кого какие приколы и баги с PHP 8.4? Кто что особенно ломал? |
С PHP 8.4 реально много мелочей, которые ломают старый код, особенно из-за жёсткой типизации и новых правил ошибки. У меня падали участки с вызовами mysql_* и парсингом строк — старый код сработал не как ожидал. Включение полного error_reporting прямо спасло, так быстрее понимаешь, где глюки. Главное, не игнорировать предупреждения и тесты запускать чаще.
|
| Время: 02:31 |