Начало работы - справочная информация (Drupal 8)
Drupal 8 использует ряд расширенных функций языка PHP и сложных сторонних библиотек, чтобы предоставить сторонним разработчикам самый продвинутый API из всех доступных CMS. Хотя опытные разработчики Drupal 7 могут увидеть некоторые существенные изменения, большая часть базовой структуры останется знакомой.
Если какой-либо из материалов, представленных при прохождении пошагового руководства для разработчика модуля D8, является для вас новым, то приведенный ниже материал может помочь. Однако для перехода к описанию модуля D8 не требуется исчерпывающих знаний.
Объектно-ориентированное программирование
ООП, хотя изначально и устрашающее, сейчас хорошо зарекомендовало себя как лучший способ.
Для общего обзора лучших практик PHP, прочитайте phptherightway.com. Drupal не использует все различные инструменты и методы, документированные там, но он служит отличным введением в PHP и многие функции языка.
Обновите свои знания ООП, прочитав официальную документацию PHP по классам и объектам, а также некоторые из этих хороших учебников:
- PHP ООП в полном объеме эффект
- Объектно-ориентированное программирование (на Википедии)
- Объектно-ориентированный PHP для начинающих (at tuts+)
- Объектно-ориентированные концепции (at tutorialspoint.com)
- Объектно-ориентированное программирование на PHP (at phpro.org)
- Объектно-ориентированное программирование на PHP (at youtube.com)
- Основы программирования: объектно-ориентированный дизайн (at lynda.com)
- Необходимо знать 12 PHP концепций ООП
- ООП трек на SymfonyCasts (ранее KNP university)
Drupal 8 также использует некоторые распространенные шаблоны проектирования, и вы захотите убедиться, что у вас есть общее представление о них:
Паттерн фабрика и поздние статическое связывание
Паттерны проектирования программного обеспечения (в Википедии)
Основы программирования: шаблоны проектирования (на lynda.com)
@todo: добавить дополнительные ссылки на документацию о шаблонах, которые мы используем ...
Пространства имен PHP
Если вы не знакомы с концепцией пространства имен в PHP, попробуйте некоторые из этих статей:
- Как использовать пространства имен PHP.
- PHP: пространства имен
- видео о пространствах имен PHP.
- Объяснены пространства имен PHP (by Dayle Rees)
- Пространство имен в PHP (at tuts+)
В большинстве случаев код Drupal является пространством имен на основе модуля, которому принадлежит код.
Пример: пространство имен для block.module
namespace Drupal\block;
@todo: объясните, почему иногда это Drupal \, а иногда Drupal \\ [Controller|Form|Plugin| и т. д.] и как я должен знать, какой использовать ...
Узнайте больше о стандартах пространства имен Drupal. Подробнее об использовании PSR-4 в Drupal здесь. Правильно настроенное программное обеспечение для кодирования должно быть способно распознавать пространства имен PHP и предоставлять помощь и автозаполнение.
Внедрение зависимости
Хотя внедрение зависимостей на самом деле является еще одним шаблоном проектирования ООП, мы его здесь называем, потому что Drupal 8 интенсивно использует эту концепцию, и важно иметь базовое понимание, чтобы получить доступ и использовать многие из основных API.
Читайте о внедрении зависимостей в PHP, а также о дополнительных статьях на этой странице. Особенно эта статья, потому что Drupal интенсивно использует сервисный контейнер Symfony, на который ссылаются.
Смотрите также:
- Услуги и инъекция зависимости в Drupal 8
- Инъекция зависимости (на Википедии)
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.