1 минута
Drupal 8. Основные нововведения, Symfony2-компоненты, новые возможности
Хотя до сих пор точной даты выхода Drupal 8 еще нет, предстоящий запуск новой версии Drupal сильно повлияет на развитие самой CMS, не только как инструмента администрирования, но и ресурса для создания многофункциональных мобильных веб-сервисов.
Мы рассмотрим основные 9 нововведений, которые будут составлять основной «базис» новой CMS Drupal 8.
1. Объектно-ориентированное программирование (ООП).
Drupal 8 официально войдет в мир объектно-ориентированного программирования с введением основных компонентов Symfony2. Проект Symfony представляет собой набор специализированных PHP-компонентов, использующий знаменитый шаблон проектирования Model-View-Controller. Таким образом, программистам предоставляются огромные возможности по созданию динамических отношений между различными объектами PHP классов. Поддерживать и модернизировать такой код намного легче и приятнее.
В состав Drupal 8 будут включены следующие компоненты Symfony2:
А) HttpFoundation и HttpKernel – основные компоненты, с которых началась интеграция Drupal 8 и Symfony2. Эти компоненты отвечают за обработку HTTP-запросов и ответов, которыми управляются в виде готовых объектов.
Схема работы маршрутизации HTTP-запросов в Drupal 8
Компонент HttpFoundation
На самом глубоком уровне находится компонент :namespace:`Symfony\\Component\\HttpFoundation`. HttpFoundation предоставляет основные объекты, необходимые для работы с HTTP. Это объектно-ориентированная абстракция некоторых встроенных PHP функций и переменных:
- Класс Symfony\Component\HttpFoundation\Request абстрагирует основные глобальные переменные в PHP, такие как $_GET, $_POST, $_COOKIE, $_FILES и $_SERVER;
- Класс Symfony\Component\HttpFoundation\Response абстрагирует некоторые PHP функции типа header(), setcookie() и echo;
- Класс Symfony\Component\HttpFoundation\Session и Symfony\Component\HttpFoundation\SessionStorage\SessionStorageInterface абстрагируют функции session_*() для управления сессией.
Компонент HttpKernel
Поверх HttpFoundation располагается компонент :namespace:`Symfony\\Component\\HttpKernel`. HttpKernel управляет динамической частью HTTP; это тонкая обёртка поверх классов Request и Response, которая приводит способы обработки запросов к стандарту. Компонент также предоставляет точки для расширений и инструменты, делающие его идеальной стартовой площадкой для создания Web-фреймворка без лишних проблем.
Б) Routing – наследник hook_menu, компонент преобразовывает HTTP-запрос в вызов определенной функции.
В) ClassLoader – важный компонент, особенно для разработчиков модулей, который необходим для загрузки определенных классов по необходимости.
Г) Dependency Injection или Service Container - позволяет сделать классы независимыми, доступными для повторного использования и юнит-тестирования;
Д) EventDispatcher. Компонент реализует систему паттернов хуков, но не заменяет их полностью. Ожидается, что в Drupal 9 EventDispatcher усилит свое присутствие в различных компонентах уровня ядра.
Е) Yaml – компонент, позволяющий определять модулям свои настройки по умолчанию и разрешать пользователям сайта их переопределять.
Ж) Twig – мощный шаблонизатор, который полностью вытеснит существующий PHPtemplate в Drupal 7.
З) Serializer – компонент, который переводит объект в один из указанных форматов и обратно.
И) Translation – компонент, отвечающий за перевод и локализацию.
K) Process – компонент, необходимый для управления CMS drupal 8 из командной строки.
Л) Validator – компонент, отвечающий за проверку значений и данных. Будет использоваться, например, при проверке сущностей данных или при проверке форм при их отправке.
2. Twig – новый движок для создания тем в Drupal 8.
Ядро Twig полностью интегрировано с Drupal 8 и определяет новую удобную логику для построения различных тем.
Характеристики Twig
- Быстрый: Twig компилирует шаблоны в оптимизированный PHP код. Использование памяти по сравнению с обычным PHP кодом сведено к минимуму.
- Безопасный: Twig имеет режим "песочницы" для оценки "ненадежного" кода в шаблонах. Это позволяет использовать Twig в приложениях, где пользователи могут менять содержимое шаблонов.
- Гибкий: Twig использует гибко настраиваемые лексический и грамматический анализаторы. Это позволяет разработчику определять свои теги и фильтры, создавать собственный DSL.
Пример шаблона maintenance-page.html.twig темы bartik в CMS Drupal 8
{{ head }}
{{ head_title }}
{{ styles }}
{{ scripts }}
{{ 'Skip to main content'|t }}
{% if site_name or site_slogan %}
{% if site_name %}
{% endif %}
{% if site_slogan %}
{{ site_slogan }}
{% endif %}
{% endif %}
3. Встроенный inline-редактор SPARK.
Главная особенность модуля заключается в возможности редактирования содержимого, меню и блоков непосредственно на странице, без необходимости загрузки отдельной формы редактирования. Проект SPARK http://www.sparkdrupal.com/ поддерживается компанией-разработчиком Drupal – Acquia.
4. Новая адаптивная панель инструментов.
Новая административная панель в Drupal 8 будет иметь новый вид и визуально разделена на три пункта Menu, Shortcuts (Ярлыки), Личный кабинет. В свою очередь, Menu включает пункты Content (Контент), Structure (Структура), Appearance (Внешний вид), Extend (Расширения), Configuration (Настройки), People (Пользователи), Reports (Отчеты), Help (Справка).
Кроме того, новая панель инструментов адаптирована под мобильные устройства, планшеты и персональные компьютеры. Дополнительное меню может автоматически трансформироваться, как в вертикальную, так и в горизонтальную позицию.
5. Интеграция модуля Views в ядро Drupal 8.
Номер 1 модуль по количеству скачиваний – Views будет интегрирован в ядро CMS Drupal 8. Так как данный модуль используется на более 70% всех веб-сайтов CMS Drupal, такой нововведение позволит разрабатывать и визуализировать новые проекты без единой строчки кода «прямо из коробки».
6. Drupal 8 будет наиболее доступной CMS для слабовидящих пользователей Интернета.
В системе появится специальный метод «Announce», который дает возможность модулям создавать прямой выход на чтения с экрана. Дополнительный метод TabbingManager позволит скрывать ненужные элементы, для выделения и отображения необходимого контента.
7. Встроенный визуальный редактор CKEditor.
По умолчанию в Drupal 8 главным WYSISYG-редактором становится CKEditor. Автоматически настроенный с различными профилями фильтрации тегов, CKEditor позволяет сократить время на настройку визуального редактирования материалов.
8. Поддержка RESTful Web Services.
В Drupal 8 весь контент может взаимодействовать через REST интерфейс, позволяющий проектировать различные сетевые веб-приложения. Таким образом, количество передаваемых форматов увеличится (HTML, XML, JSON).
9. Улучшенная поддержка мультиязычности.
Строительство многоязычных веб-сайтов становится намного проще, благодаря совершенствованию выбора языков, готовых локализаций и настройке параметров перевода.
Кроме того, в состав ядра Drupal 8 будут входить следующие компоненты:
Guzzle — HTTP-клиент, пришедший на замену drupal_http_request().
Assetic — менеджер js и css файлов.
EasyRDF - компонент для построения RDF-данных.
Composer — менеджер зависимостей для PHP.
PHPUnit - юнит-тестирование PHP.
Zend_Feed - функциональная часть Zend Framework для работы с RSS-лентами.
Backbone.js — компонент для создания RIA JavaScript приложений.
Underscore.js — набор функций-утилит расширяющий возможности Javascript.
domReady — легковесный аналог jQuery(document).ready().
jQuery, jQuery UI, jQuery Form, jQuery UI Touch Punch - актуальный набор библиотек Javascript последней версии.
Normalize.css — альтернатива css reset.
Modernizr - библиотека на JavaScript с открытым исходным кодом, позволяющая определять поддержку различных свойств. Modernizr предоставляет широкий спектр решений для веб-дизайнеров и разработчиков, чтобы пользоваться новыми возможностями HTML5 и CSS3, несмотря на различную поддержку браузерами.