logo

额外区块类型 (EBT) - 全新的布局构建器体验❗

额外区块类型 (EBT) - 样式化、可定制的区块类型:幻灯片、标签页、卡片、手风琴等更多类型。内置背景、DOM Box、JavaScript 插件的设置。立即体验布局构建的未来。

演示 EBT 模块 下载 EBT 模块

❗额外段落类型 (EPT) - 全新的 Paragraphs 体验

额外段落类型 (EPT) - 类似的基于 Paragraph 的模块集合。

演示 EPT 模块 滚动

滚动

入门指南 - 参考信息(Drupal 8)

04/10/2025, by Ivan

Drupal 8 使用了许多 PHP 的高级功能和复杂的第三方库,为开发者提供了所有 CMS 中最先进的 API。虽然有经验的 Drupal 7 开发者会注意到一些重大变化,但大部分基础结构仍然熟悉。

如果在学习本模块开发者分步指南(D8)时,有些内容对你来说是新的,那么以下资料可能会有所帮助。不过,进入 D8 模块部分 并不需要完全掌握所有知识。

面向对象编程(OOP)

虽然最初看起来令人望而生畏,但 OOP 已被证明是最佳实践。
要了解 PHP 的最佳实践,请阅读 phptherightway.com。Drupal 并未使用其中所有记录的工具和方法,但该网站是学习 PHP 语言功能的绝佳入门。

通过阅读 PHP 官方关于类与对象的文档以及以下优秀教程,更新你的 OOP 知识:

Drupal 8 还使用了许多常见的设计模式,建议你了解以下概念:

工厂模式延迟静态绑定
软件设计模式(维基百科)
编程基础:设计模式(lynda.com)

PHP 命名空间

如果你还不熟悉 PHP 命名空间的概念,请阅读以下资料:

在大多数情况下,Drupal 代码的命名空间基于所属模块。

示例:block.module 的命名空间:

namespace Drupal\block;

了解更多 Drupal 命名空间标准,以及 Drupal 中的 PSR-4 使用方法。如果你的 IDE 支持 PHP 命名空间,它应能识别并提供自动补全功能。

依赖注入(Dependency Injection)

虽然依赖注入本质上是 OOP 的一种设计模式,但 Drupal 8 广泛使用了这一概念。理解它对访问和使用核心 API 至关重要。

阅读 PHP 中的依赖注入,以及页面上推荐的其他相关文章。特别推荐阅读 这篇文章,因为 Drupal 广泛使用了 Symfony 的服务容器。

另请参阅:

Symfony

Symfony 是一个 PHP 框架,Drupal 采用它以减少代码重复。Drupal 8 使用 Symfony 2(后迁移至 Symfony 3)的大量代码来处理路由、会话和服务容器等功能。要了解为什么做出这一选择,请查看主提交者 alexpott 的演讲

阅读 Symfony 2 官方文档 来加深理解。虽然不必掌握全部内容,但了解 Symfony 的工作原理能让你成为更优秀的 Drupal 和 PHP 开发者。还可以查看 Symfony 术语表

查看 core/composer.lock 文件以了解 Drupal 使用的 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",
...

注解(Annotations)

Drupal 8 使用 PHP 注解(@docblock 注释)来发现插件并为执行代码提供上下文和元数据。这些注解通过 Doctrine 注解解析器(v1.6) 读取,然后转化为 Drupal 可理解的信息。

了解更多关于 通过注解发现插件 的信息。

查看 Drupal 8 中的所有注解类型

另请参阅:PHPDoc(维基百科)

插件(Plugins)

插件是一种可替换的小型功能实现。具有相似功能的插件属于同一类型。例如,“字段小部件”就是一种插件类型,每种小部件(如文本字段、日期等)都是通过插件实现的。

了解更多 Drupal 8 插件 API

服务(Services)

在 Drupal 8 中,服务是由服务容器管理的对象。服务的概念用于分离可重用功能,使这些服务可插拔并可替换,通过注册到依赖注入服务容器实现。

另请参阅:面向 Drupal 开发者的服务容器

更多资源

以下是帮助你熟悉 Drupal 8 的更多资料: