Deprecations в PHP 8.4: к чему готовиться и что удалят в июне 2025

20.06.20253 мин чтения
Макар Кучеренко
Python-разработчикМакар Кучеренко

Каждое обновление 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 шага:

  1. Поднимите тестовый контур в Docker с образом php:8.4-rc-cli.
  2. Запустите ваши модульные тесты (PHPUnit / Pest). Внимательно соберите все E_DEPRECATED сообщения в логах.
  3. Прогоните код через статический анализатор (PHPStan уровня 8) — он заранее найдет все нестрогие преобразования типов и устаревшие функции.

Команда Backend-инженеров NBM-IT проводит аудит легаси-кода. Мы берем на себя безопасную миграцию сложных корпоративных систем с PHP 7.x на актуальные версии 8.3/8.4, закрывая потенциальные бэкдоры (CVE) и ускоряя работу систем.

Вам также может быть интересно

Оставьте свои контакты — мы перезвоним, разберёмся в задаче и предложим оптимальный путь. За плечами более 350 проектов, каждый из которых мы запускали с индивидуального подхода. Гарантируем экспертную консультацию в рабочее время.