Статьи

Symfony в Друпале 8

Если вы Drupaler, вы должны знать, что Drupal 8 уже в пути. Что вы можете не знать, так это то, что он включает в себя несколько важных компонентов Symfony. Работа с Drupal 8.x даст Drupalers возможность стать частью огромной кривой обучения и соблазнит их узнать больше о Symfony. В этой статье мы обсудим компоненты Symfony, которые были добавлены в Drupal 8, и затронут некоторые сторонние библиотеки.

Прежде чем мы перейдем к самой статье, давайте сначала кратко рассмотрим Symfony . Это основанная на PHP платформа веб-приложений, которая следует архитектуре MVC. Кроме того, это проект с открытым исходным кодом, который был выпущен под лицензией MIT. Пожалуйста, убедитесь, что вы не перепутали это с Symfony CMS. Если вы хотите более подробно изучить инфраструктуру Symfony , см. Ее вики-страницу или любую из предыдущих статей SitePoint об этом .

Теперь давайте узнаем о компонентах Symfony, которые реализуются в Drupal 8.

Компоненты Symfony в Drupal 8.x

Ниже приведены компоненты Symfony, которые в значительной степени приведут в действие ядро ​​Drupal 8:

  • HttpKernel и HttpFoundation. Они отвечают за оптимизацию процесса преобразования запроса в ответ с помощью EventDispatcher Перемещение Drupal 8 в Symfony было стимулировано Web Services и Content Core Initiative (WSCCI), чтобы превратить Drupal из первоклассной CMS в первоклассный REST-сервер с первоклассной CMS, работающей поверх него. Эта инициатива предназначена для того, чтобы позволить Drupal использовать веб-сервисы для предоставления своего контента с меньшей сложностью; рассматривая это как долгосрочное видение, Drupal будет более гибкой, надежной и легко обслуживаемой CMS.

  • EventDispatcherреализует шаблон Mediator (который использует инкапсуляцию) простым и эффективным способом, особенно там, где не работает наследование кода, что делает приложение чрезвычайно расширяемым. Это более эффективно в ситуациях, когда вы склонны поддерживать и / или реорганизовывать программу, состоящую из огромного числа классов, потому что она делает общение между классами довольно простым и легким.

  • ClassLoader — предоставляет инструменты для автозагрузки классов и кэширования их местоположения. PHP использует механизм автозагрузки для делегирования загрузки файла, который определяет класс, в ситуациях, когда вы ссылаетесь на класс, который еще не был необходим или еще не включен. Symfony поставляется с автозагрузчиками, такими как PSR-0 Class LoaderMapClassLoader Реализация компонента ClassLoadermodule_load_include Более того, это позволяет разработчикам легко вызывать классы во время выполнения.

  • YAML — он анализирует строки YAML и преобразует их в массивы PHP и наоборот. Этот формат был специально разработан для хранения информации, связанной с конфигурацией, при этом он такой же выразительный, как файлы XML, и такой же читаемый, как файлы INI. Он служит неотъемлемым компонентом CMI (Инициатива по управлению конфигурацией) в Drupal, который позволяет нашим модулям первоначально определять свои параметры конфигурации по умолчанию, а позже позволяет разработчику сайта изменять то же, что и когда было указано. Эта концепция CMI в Drupal 8, основанная на YAML, является заменой модуля Drupal, входящего в состав компонентов, который является надежной концепцией в отношении миграции и развертывания в различных средах.

  • Маршрутизация. Позволяет загружать все маршруты и выводить сопоставление или генератор URL-адресов, относящиеся к этим маршрутам. Это также означает, что он отображает HTTP-запрос на набор переменных конфигурации. Что касается версий Drupal 8 и выше, мы определяем маршруты нашего модуля в файле конфигурации YAML, каждый из которых настроен на запуск определенного действия, определенного в классах нашего модуля.

  • DependencyInjection — в основном используется для стандартизации и централизации способов построения объектов в нашем приложении. Компонент Symfony DependencyInjection был включен в Drupal 8 с целью написания кода таким образом, чтобы классы можно было повторно использовать и тестировать модульно, где это применимо и желательно.

  • Twig — Drupal 8 принял шаблонный движок Twig . Это представляет интерес для тех, кто, вероятно, никогда больше не подумает о каком-либо другом варианте, пока они работают над темами Drupal. Twig был разработан Fabien Potencier , который также разработал проект Symfony , и был хорошо настроен для интеграции в Drupal 8.

  • Процесс — Помогает выполнять команды в подпроцессах, используя интерфейс командной строки. Drupal 8 будет использовать это для обработки всех действий, которые по своей природе являются командной строкой.

  • Сериализатор — используется для преобразования объектов в определенный формат (например, XML, YAML, JSON и т. Д.) И наоборот. Чтобы лучше это понять, давайте посмотрим на следующую схему, за которой следует компонент Serializer :

    Кроме того, мы можем использовать его для выполнения ряда заданий, начиная от конфигурации до узла и создания объекта, которые должны доставляться конечной точкой REST.

  • Validator — помогает Drupal проверять значения. Например: проверка отправки формы, проверка сущностей в Drupal и т. Д. Для выполнения своей работы он использует аннотации Doctrine (обсуждается в разделе « Готовые компоненты сторонних производителей »).

  • Перевод — предоставляет стандартный набор инструментов для загрузки файлов перевода, генерации переведенных строк в качестве вывода и использования сгенерированного результата.

Готовые сторонние компоненты

Мы рассмотрели компоненты Symfony, которые были включены в Drupal 8. В этом разделе мы узнаем о сторонних PHP-компонентах, которые были реализованы в Drupal 8 и не связаны с Symfony. Они есть:

  • Asseticструктура управления активами . Активы в Drupal состоят из файлов CSS, файлов JavaScript, изображений, других медиафайлов, метаданных и т. Д. Эти активы содержат фильтруемый контент, который можно загружать и выгружать. Чтобы манипулировать активами, вам необходимо применить соответствующие фильтры. Чтобы понять фильтры, в каких ситуациях каждый из них может быть использован, как использовать фильтры, построить, создать дамп и многое другое, мы рекомендуем вам прочитать страницу Assetic Github .

  • Composer — инструмент, специально разработанный и разработанный для управления зависимостями в PHP, позволяющий нам объявлять зависимые библиотеки, которые нужны нашему проекту, и устанавливать их для нас. Хотя он работает с пакетами и библиотеками, он не является менеджером пакетов. Композитор является благом для Drupal 8 из-за следующего:

    • Очень эффективно обрабатывает ситуации, когда ваш проект зависит от ряда библиотек.

    • Решает ситуации, когда в библиотеках есть понятие вложенной зависимости. Например; Ваш проект зависит от библиотеки (скажем, lib1 ), а в тройке lib1 зависит от какой-то другой библиотеки (скажем, lib2 ).

    • Композитор несет ответственность за выбор того, какую версию пакета или библиотеки необходимо установить, если явно не указано, на какие версии следует ориентироваться.

  • Doctrine — набор инструментов для использования с записями базы данных. Drupal 8 использует его часть, называемую Annotations, которая предоставляет дополнительные метаданные для Drupal. Были предприняты усилия, чтобы представить такую ​​сложную функциональность довольно простым и удобным способом, особенно при определении пользовательских типов объектов. Если вы хотите больше узнать о том, как Doctrine предполагается использовать с Drupal 8, мы рекомендуем вам посетить страницу документации .

  • EasyRDF — библиотека PHP, которая использовалась с Drupal 8, чтобы облегчить использование и производство RDF. С помощью EasyRDF Drupal 8 добавляет возможность создавать метаданные в разметке простым и удобным способом. Вы также можете посетить официальный сайт EasyRDF, чтобы узнать больше об этом.

  • Guzzle — это PHP-HTTP-клиент и инфраструктура, которые помогают Drupal 8 создавать веб-запросы с использованием вызовов веб-служб на основе REST. Это делает веб-порталы Drupal 8 более эффективными с точки зрения обработки различных видов веб-сервисов. Чтобы узнать больше о Guzzle, мы рекомендуем прочитать нашу предыдущую статью об этом .

  • PHPUnit — используется в Drupal 8 для стандартизации модульного тестирования по всему ядру, а также для помощи разработчикам в написании кода высочайшего качества. PHPUnit гарантирует, что любой код, написанный на Drupal 8 и в любом встроенном в него пользовательском модуле, соответствует отраслевым стандартам и работает, как ожидается, на протяжении всего жизненного цикла. Вы можете следить за текущим статусом включения PHPUnit в Drupal 8, перейдя сюда .

  • Ведение журнала PSR-3 — общая система ведения журнала, которая используется всеми приложениями PHP. Drupal 7 и более старые версии используют watchdog() Переключение журналирования Drupal с watchdog () на инфраструктуру журналирования PSR-3 сделало Drupal 8 более надежным и масштабируемым с точки зрения обычного журналирования. Вы можете отслеживать текущее состояние этого компонента в Switch watchdog для среды журналирования PSR-3 .

Вывод

Введение нескольких компонентов Symfony упростило работу с Drupal 8. Кроме того, включение нескольких компонентов, не относящихся к Symfony, добавило ценность Drupal 8 с точки зрения его качества, масштабируемости и производительности, что делает его еще более надежным и обслуживаемым.