Drupal 8 и 9: различия

Архитектурная основа: уход от устаревших зависимостей
Ключевое различие между Drupal 8 и 9 лежит на уровне программного стека. Drupal 9 полностью устраняет зависимости, которые были объявлены устаревшими (deprecated) в версии 8.9. Это не косметическое обновление — из ядра удалены библиотеки и модули, работавшие на устаревших версиях Symfony и Twig. Например, Drupal 8 поддерживал PHPUnit до версии 7, тогда как Drupal 9 требует PHPUnit 9.5. Разработчику, проходящему обучение, критически понимать, что код, написанный под Drupal 8 с использованием устаревших вызовов, не скомпилируется в девятой версии без рефакторинга.
- Минимальная версия PHP: Drupal 8 требует PHP 7.0.0, Drupal 9 — PHP 7.3.0 и выше. На практике это означает, что хостинг должен поддерживать PHP 8.0 или 8.1 для оптимальной производительности.
- Версия Symfony: Drupal 8 использует Symfony 3.4 (версия с ограниченной поддержкой), Drupal 9 переходит на Symfony 4.4 и 5.x. Это затрагивает маршрутизацию, сериализацию и консольные команды.
- Удаление модуля CKEditor 4: В Drupal 9 стандартный редактор заменён на CKEditor 5. Модули для Drupal 8, использующие CKEditor 4, требуют форка или замены.
- Изменения в Drush: Версия Drush 10, совместимая с Drupal 9, использует Symfony Console 5, в отличие от Drush 9 для восьмерки на Symfony 3.
- Работа с Twig: Drupal 9 использует Twig 2.x, в то время как Drupal 8 поддерживал Twig 1.x. Это влияет на синтаксис шаблонов, особенно на фильтры и макросы.
Процесс обновления: чем Drupal 8->9 отличается от стандартного апгрейда
Миграция с Drupal 8 на 9 — это не обычное обновление (update), а скорее смена мажорной версии, которая тем не менее не требует полной перестройки сайта. Основной инструмент — модуль Upgrade Status. После его анализа вы получаете список всех устаревших функций в вашем коде. Критический момент: если ваш сайт на Drupal 8 не содержит кастомного кода с устаревшими вызовами, процесс обновления сводится к замене ядра и обновлению одной команды Composer. Однако, на практике, большинство проектов требуют исправления от 5 до 20 deprecated-функций.
В отличие от классического перехода с Drupal 7 на 8, где нужна была полная миграция контента, Drupal 9 использует тот же движок базы данных, что и Drupal 8.9. Это означает, что процесс миграции не затрагивает структуру таблиц — все модули и конфигурации остаются работоспособными при условии их совместимости. Обучение должно фокусироваться на поиске и замене устаревшего кода, а не на переносе данных.
Совместимость модулей и contrib-экосистемы
Экосистема Drupal 9 не является полностью обратно совместимой с Drupal 8 на уровне тысяч контриб-модулей. Хотя модули с версией 8.x-* могут работать под Drupal 9, если они не используют deprecated API, на практике многие модули требуют отдельной ветки, обычно 9.x-*. По состоянию на 2026 год все популярные модули (Views, Paragraphs, Pathauto) имеют стабильные версии для Drupal 9. Проблема возникает с модулями, которые полагаются на библиотеки jQuery UI, удалённые из ядра Drupal 9. Например, модули, отвечающие за интерфейсы с перетаскиванием (draggable), требуют переписывания на JavaScript-фреймворки без jQuery UI.
Для обучения рекомендуем использовать статический анализатор Drupal Rector, который автоматически исправляет до 80% deprecated-вызовов. Это ускоряет переход на 9-ю версию и снижает риск ошибок при ручном рефакторинге.
Практический пример рефакторинга: от Drupal 8 к Drupal 9
Рассмотрим типовую задачу: вы пишете кастомный модуль, который обращается к базе данных. В Drupal 8 распространён вызов db_query(), который является устаревшим. В Drupal 9 его необходимо заменить на подключение через сервис database: \Drupal::database()->query('SELECT ...'). Разница не только в синтаксисе — новая система требует явного указания префиксов таблиц через {}. Другой пример: в Drupal 8 для работы с сущностями часто использовался entity_create(), удалённый в Drupal 9. Теперь применяется статический метод: \Drupal::entityTypeManager()->getStorage('node')->create().
Для разработчиков, проходящих курс по Drupal 9, критически изучить новый сервис-контейнер Symfony 4. Drupal 9 требует явной инъекции зависимостей через конструктор, в отличие от Drupal 8, где часто допускался вызов статических методов из глобального Drupal-класса. Обучение должно включать практику написания сервисов с тегированием (tags) и использование консоли Drupal для генерации кода.
План действий при заказе курса по миграции
При заказе целевого обучения по переходу с Drupal 8 на 9 на нашей платформе вы получаете структурированный маршрут. После оплаты доступ к материалам открывается в течение 1 рабочего дня. Первый модуль — «Аудит текущего проекта»: вы загружаете composer.json и список модулей, система автоматически генерирует отчёт о совместимости. Второй модуль — «Рефакторинг кода»: пошаговые видеоуроки с разбором 50 наиболее частых deprecated-вызовов с примерами исправления. Третий модуль — «Living Demo»: доступ к виртуальному стенду, где вы можете безопасно провести миграцию тестового сайта.
Сроки обучения: базовый курс (8 академических часов) рассчитан на 2 недели интенсивной работы. Продвинутый курс (24 часа) включает работу с кастомными модулями, обновление тем и оптимизацию запросов. Все материалы остаются в личном кабинете на 12 месяцев. Техническая поддержка осуществляется через систему тикетов с ответом до 4 часов в рабочие дни. По окончании выдаётся сертификат с указанием версии Drupal 9 и пройденных модулей.
Важно: Курс не покрывает миграцию с Drupal 7 — это отдельная специализация. В рамках обучения мы предоставляем чек-лист для тестирования после обновления: проверка работы всех форм, отображение ошибок PHP, работа кэша и перестроение индексов поиска. Это гарантирует, что после обновления сайт не потеряет функциональность.
Преимущества своевременного перехода на Drupal 9
- Безопасность: Drupal 9 получает обновления безопасности до ноября 2023 года (факт: на 2026 год поддержка Drupal 8 полностью прекращена, поэтому обучение и миграция на 9-ю версию — обязательное условие для соответствия стандартам безопасности).
- Совместимость с новым хостингом: Провайдеры, такие как Pantheon и Acquia, перестали поддерживать Drupal 8 на своих платформах. Переход на Drupal 9 позволяет использовать современные PHP-8 опкоды и Redis-кэширование.
- Производительность: Drupal 9 использует BigPipe по умолчанию и улучшенный механизм кэширования страниц, что даёт прирост скорости загрузки на 15-25% по сравнению с последними версиями Drupal 8.
- Доступ к новым модулям: Более 80% новых модулей на Drupal.org выпускаются исключительно для Drupal 9 и 10. Оставаться на Drupal 8 означает потерю доступа к инновациям.
- Снижение затрат на поддержку: Средняя стоимость часа разработчика для Drupal 8 выше, чем для Drupal 9, из-за дефицита специалистов. Миграция снижает операционные риски.
Таким образом, различие между Drupal 8 и Drupal 9 для практикующего разработчика — это не просто смена номера версии, а необходимость пересмотра архитектурных подходов, стека зависимостей и инструментов тестирования. Наша платформа предлагает структурированный путь обучения, который минимизирует риски при переходе и даёт конкретные инструменты для рефакторинга. Приступайте к аудиту вашего проекта сегодня, записавшись на курс «Drupal 9: практическая миграция».
Добавлено: 23.04.2026
