Drupal 8: Используемые компоненты Symfony2 в ядре Drupal 8

Несомненно, использование компонентов Symfony2 является большим шагом в развитии Drupal. Symfony2 спроектирована как набор независимых компонентов, которые могут использоваться отдельно.

Компоненты Symfony2

В ядре Drupal 8 используются следующие компоненты Symfony2:

  • ClassLoader - используется для загрузки классов по мере необходимости;
  • HttpFoundation and HttpKernel - один из основных компонентов, с которых началась интеграци Symsfony2 в Drupal. Преобразовывает все что связано с HTTP при запросе и ответе - в объекты;
  • Routing - преобразовывает HTTP запрос в вызов определенной функции, подобно hook_menu;
  • DependencyInjection или Service Container - позволяет сделать классы независимыми, и тем самым делает их доступными для повторного использования и юнит-тестирования;
  • EventDispatcher - реализует паттерн Наблюдатель (Observer). Делает тоже самое что и система хуков, но на данный момент, не заменяет их полностью;
  • Yaml - позволяет работать с форматом yaml и сохранять настройки модулей и ядра - в виде текстовых файлов;
  • Twig - новый удобный, мощный движок шаблонов;
  • Translation - система переводов;
  • Process - используется для выполнения в субпроцессе, команд из консоли ;
  • Serializer - преобразование объектов в определенный формат и обратно;
  • Validator - компонент, для проверки значений;

Сторонние компоненты

Также в Drupal 8 используются сторонние компоненты, которые хотя и работают с Symfony2, но не являются его компонентами:

  • Composer - менеджер зависимостей, который используется для скачивания нужных библиотек, компонент, и т.д. проекта;
  • Doctrine - используется не в полном объеме, а лишь небольшая часть - Annotations. Которая добавляет возможность использовать аннотаций, например для кофигурирования плагинов;
  • Assetic - фреймворк, который используется при скачивании страницы или другого контента, для сжатия и/или преобразования данных. Например, сжатие CSS;
  • Guzzle - http клиент, который позволяет выполнять http запросы;
  • EasyRDF - библиотека, используемая для конвертирования в и из PDF формата;
  • PHPUnit - добавляет возможность юнит-тестирования;
  • Symfony2 CMF’s Routing Component - дополняет Symfony Routing компонент, добавляет несколько новых классов;
  • PSR/Log - система логирования;