跳转到主要内容

和“
插件
”有关的内容:

10.8 实践

1、按讲义操作练习

2、设计一个购物车插件,并实现基本的购物车逻辑。

3、购物车插件需支持hook,比如自定义加入购物车之后的提示等。

4、需要至少实现5个hook

以上,自由发挥。

1、什么是上下文?

"上下文Context"这个词是什么意思呢?平常生活中它常见于语言、文字交流里面,意思是当前交流处于一个特定的环境下,依托前面的内容交流才有意义。

比如这句话:"他正在学习drupal",如果单独说是没有意义的,因为你不知道"他"指代谁,在交流中前面一定定义清楚了"他"是谁,这个"他"就是上下文,这个谁就是上下文的值…

插件派生提供了一种简单的方式来扩展单个插件,以使它能表现为多个插件。这是通过创建一个单独的类来完成的,这个类可以在插件定义中进行引用。

通常派生类在src/Plugin/Derivative目录下。

core/modules/system/src/Plugin/Block/SystemMenuBlock.php

如:…

插件发现是指Drupal系统发现某种插件的处理过程。每一种插件类型都需要实现插件发现方法,在插件管理器中已经做过解释。 插件发现组件实现了DiscoveryInterface接口,该接口定义了任何插件发现的类必须具有的方法。

在core/lib/Drupal/Component/Plugin/Discovery/…

Drupal8中要声明一个插件,通常是通过注解来完成的。

1、简单示例

如在core/modules/user/src/Plugin/Validation/Constraint/UserNameUnique.php中可以找到如下代码:

/** * Checks if a user name is unique on the…

插件管理器是一个主控类,它定义了如何发现和实例化某种类型的插件。这个类可以由任何模块调用。

1、定义插件管理器

要定义一个插件管理器,你需要定义一个discovery方法,还需要定义一个工厂类(factory)。推荐使用DefaultPluginManager作为基类,因为它已经内建了语言缓存、基于注解的插件发现机制以及其它一些基本功能…

插件实际上是由PHP定义的接口,接口规定了同类插件的标准。插件系统通过插件注解发现每一个实现了接口的类,并处理它们,并为插件类型提供一个工厂类。

插件和服务的区别:

1、插件

插件通过一个公共的接口实现不同的行为。例如,图像变换插件,一般有缩放、裁剪、去色等。每个变换类型以相同的方式接受一个图像,完成转换,返回转换后的图像…

插件实际上是由PHP定义的接口,接口规定了同类插件的标准。插件系统通过插件注解发现每一个实现了接口的类,并处理它们,并为插件类型提供一个工厂类。

插件和服务的区别:

1、插件

插件通过一个公共的接口实现不同的行为。例如,图像变换插件,一般有缩放、裁剪、去色等。每个变换类型以相同的方式接受一个图像,完成转换,返回转换后的图像…

插件即plugin,后文都以插件来指代plugin。

插件是一些可插拔的功能块。Drupal8包含很多不同的插件类型,比如field widget这个插件类型下,又包含了很多插件。

插件通常是在模块中定义,插件系统包含这些概念:

1、插件类型(Plugin Type)