Если вы 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 Loader
MapClassLoader
Реализация компонентаClassLoader
module_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 с точки зрения его качества, масштабируемости и производительности, что делает его еще более надежным и обслуживаемым.