Deprecations в PHP 8.4: к чему готовиться и что удалят в июне 2025
Каждое обновление PHP — это не только долгожданные новые функции, но и головная боль для проектов, в которых технический долг (Legacy) не закрывался годами. Летний релиз-кандидат PHP 8.4 дал четкую картину: язык продолжает курс на жесточайшую строгую типизацию.
Разбираем, от каких функций вам придется избавиться к выходу финального релиза, и что нового завезли для архитекторов данных.
1. Строгая мутация типов: Конец неявного Float → String
Долгое время PHP прощал "грязную" математику. До 8.4 код ниже работал без предупреждений:
$taxRate = 19.5;
echo "Налог составляет " . $taxRate . "%";
// Неявное преобразование Float в StringВ PHP 8.4 это вызовет Deprecation Notice. Ядро требует строгой типизации при конкатенации или выводе дробных чисел. Теперь разработчик обязан явно форматировать числа, иначе в будущем (в PHP 9.0) это станет фатальной ошибкой (Fatal Error):
// Правильный подход в 8.4+:
echo "Налог составляет " . number_format($taxRate, 1) . "%";2. Глобальная чистка модулей (Что удалят безвозвратно)
К лету 2025 года в RC-версиях 8.4 был заблокирован ряд устаревших функций. Если на них завязан ваш проект — пора рефакторить.
mbregex_encoding()— Удалено: Старый механизм работы с многобайтными регулярными выражениями отправлен в утиль. Вместо этого необходимо использовать стандартныеmb_функции.- Смерть старой MySQLi-логики: Метод
mysqli::get_result()теперь строжайше требует явной инициализации для небуферизованных запросов. Многие старые ORM (самописные) перестанут работать или начнут выбрасывать Warnings.
🛠️ DevOps Совет: Обновите менеджер пакетов Composer минимум до версии
2.7. Новые версии Composer умеют парситьcomposer.jsonна предмет future-flag совместимости с PHP 8.4 и заранее предупредят о конфликтах зависимостей.
Бесплатный SEO-аудит вашего сайта
Оставьте заявку, и наши специалисты найдут точки роста поискового трафика.
3. Readonly Классы: Адаптация Frameworks (Laravel / Symfony)
С версии 8.2 мы получили readonly классы, но в 2025 году они стали де-факто индустриальным стандартом для работы с Event Sourcing и DTO.
final readonly class AppConfig {
public function __construct(
public string $dbHost,
public string $dbName
) {}
}В летних обновлениях Doctrine ORM и Laravel Eloquent наконец-то выкатили нативные механизмы гидрадации (Hydration) для таких иммутабельных объектов. Теперь фреймворки умеют напрямую рефлексировать (ReflectionClass::newInstanceWithoutConstructor) данные из БД прямо в защищенные readonly свойства в обход магии __set.
Производительность array_map и array_reduce в таких жестких структурах была оптимизирована ядром до +12%.
Бесплатный расчет стоимости проекта
Ответьте на 4 вопроса, и мы пришлем вилку цен под ваши задачи.
1. Какой тип корпоративного сайта вам нужен?
Чек-лист: как готовить код к PHP 8.4
Чтобы переход не стал катастрофой для продакшена, выполните 3 шага:
- Поднимите тестовый контур в Docker с образом
php:8.4-rc-cli. - Запустите ваши модульные тесты (PHPUnit / Pest). Внимательно соберите все
E_DEPRECATEDсообщения в логах. - Прогоните код через статический анализатор (PHPStan уровня 8) — он заранее найдет все нестрогие преобразования типов и устаревшие функции.
Команда Backend-инженеров NBM-IT проводит аудит легаси-кода. Мы берем на себя безопасную миграцию сложных корпоративных систем с PHP 7.x на актуальные версии 8.3/8.4, закрывая потенциальные бэкдоры (CVE) и ускоряя работу систем.
