Extra Block Types (EBT) - New Layout Builder experience❗

Extra Block Types (EBT) - styled, customizable block types: Slideshows, Tabs, Cards, Accordions and many others. Built-in settings for background, DOM Box, javascript plugins. Experience the future of layout building today.

Demo EBT modules Download EBT modules

❗Extra Paragraph Types (EPT) - New Paragraphs experience

Extra Paragraph Types (EPT) - analogical paragraph based set of modules.

Demo EPT modules Download EPT modules

Scroll

Начало работы - справочная информация (Drupal 8)

24/04/2020, by maria

Drupal 8 использует ряд расширенных функций языка PHP и сложных сторонних библиотек, чтобы предоставить сторонним разработчикам самый продвинутый API из всех доступных CMS. Хотя опытные разработчики Drupal 7 могут увидеть некоторые существенные изменения, большая часть базовой структуры останется знакомой.

Если какой-либо из материалов, представленных при прохождении пошагового руководства для разработчика модуля D8, является для вас новым, то приведенный ниже материал может помочь. Однако для перехода к описанию модуля D8 не требуется исчерпывающих знаний.

Объектно-ориентированное программирование

ООП, хотя изначально и устрашающее, сейчас хорошо зарекомендовало себя как лучший способ.
Для общего обзора лучших практик PHP, прочитайте phptherightway.com. Drupal не использует все различные инструменты и методы, документированные там, но он служит отличным введением в PHP и многие функции языка.

Обновите свои знания ООП, прочитав официальную документацию PHP по классам и объектам, а также некоторые из этих хороших учебников:

Drupal 8 также использует некоторые распространенные шаблоны проектирования, и вы захотите убедиться, что у вас есть общее представление о них:

Паттерн фабрика и поздние статическое связывание
Паттерны проектирования программного обеспечения (в Википедии)
Основы программирования: шаблоны проектирования (на lynda.com)
@todo: добавить дополнительные ссылки на документацию о шаблонах, которые мы используем ...

Пространства имен PHP

Если вы не знакомы с концепцией пространства имен в PHP, попробуйте некоторые из этих статей:

В большинстве случаев код Drupal является пространством имен на основе модуля, которому принадлежит код.

Пример: пространство имен для block.module

namespace Drupal\block;

@todo: объясните, почему иногда это Drupal \, а иногда Drupal \\ [Controller|Form|Plugin| и т. д.] и как я должен знать, какой использовать ...

Узнайте больше о стандартах пространства имен Drupal. Подробнее об использовании PSR-4 в Drupal здесь. Правильно настроенное программное обеспечение для кодирования должно быть способно распознавать пространства имен PHP и предоставлять помощь и автозаполнение.

Внедрение зависимости

Хотя внедрение зависимостей на самом деле является еще одним шаблоном проектирования ООП, мы его здесь называем, потому что Drupal 8 интенсивно использует эту концепцию, и важно иметь базовое понимание, чтобы получить доступ и использовать многие из основных API.

Читайте о внедрении зависимостей в PHP, а также о дополнительных статьях на этой странице. Особенно эта статья, потому что Drupal интенсивно использует сервисный контейнер Symfony, на который ссылаются.

Смотрите также:

 

Symfony

Symfony - это PHP-фреймворк, заимствующий Drupal для уменьшения дублирования кода в различных PHP-проектах. Большая часть кода, который Drupal 8 использует для управления маршрутизацией, сессиями и контейнером сервисов, помимо прочего, заимствована из Symfony 2 (а по мере разработки Drupal 8 перемещена в Symfony 3). Если вы хотите узнать больше о том, почему было принято это решение, ознакомьтесь с этой презентацией главного коммиттера alexpott.

Проверьте книгу о Symfony 2 и освежите свои знания Symfony. Хотя не все это требуется для понимания Drupal, знание того, как работает Symfony, сделает вас и лучшим разработчиком Drupal, и лучшим PHP-разработчиком. Вас также может заинтересовать глоссарий Symfony.

Проверьте core/composer.lock, чтобы увидеть библиотеки Symfony. Начиная с Drupal 8.6.15 это Symfony PHP и тесно связанные библиотеки:

...
"symfony/class-loader": "~3.4.0",
"symfony/console": "~3.4.0",
"symfony/dependency-injection": "~3.4.26",
"symfony/event-dispatcher": "~3.4.0",
"symfony/http-foundation": "~3.4.26",
"symfony/http-kernel": "~3.4.14",
"symfony/routing": "~3.4.0",
"symfony/serializer": "~3.4.0",
"symfony/translation": "~3.4.0",
"symfony/validator": "~3.4.0",
"symfony/process": "~3.4.0",
"symfony/polyfill-iconv": "^1.0",
"symfony/yaml": "~3.4.5",
"twig/twig": "^1.38.2",
"doctrine/common": "^2.5",
"doctrine/annotations": "^1.2",
...

Аннотации

Drupal 8 использует аннотации PHP - комментарии @docblock, добавленные в ваш код с использованием специального синтаксиса, - для обнаружения плагинов и для предоставления дополнительного контекста / метаданных для исполняемого кода. Аннотации читаются с использованием анализатора аннотаций Doctrine (v.1.6.), А затем превращаются в информацию, которую Drupal может использовать, чтобы лучше понять, что делает ваш код.

Узнайте больше об использовании аннотаций для обнаружения плагинов.

Смотрите список всех различных типов аннотаций в Drupal 8.

Смотрите также: PHPDoc (в Википедии)

Плагины

Плагины предоставляют небольшие функциональные возможности таким образом, что их можно легко заменить на другой плагин. Плагины, которые выполняют аналогичную функциональность, относятся к одному и тому же типу. Например, «Виджет поля» является типом плагина, и каждый отдельный виджет поля (например, текстовое поле, текстовое поле, дата и т. Д.) Реализован с помощью плагина.

Узнайте больше об API плагинов в Drupal 8.

Сервисы

В Drupal 8, сервис - это любой объект, управляемый контейнером сервисов. Концепция сервисов была введена для отделения многократно используемых функций и делает эти сервисы подключаемыми и заменяемыми, регистрируя их в контейнере сервисов внедрения зависимостей, с которым они тесно связаны.

Смотрите также: Сервисный контейнер для Drupal Geeks

Другие источники

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

Drupal’s online documentation is © 2000-2020 by the individual contributors and can be used in accordance with the Creative Commons License, Attribution-ShareAlike 2.0. PHP code is distributed under the GNU General Public License.