概述
一个插件,或拦截器,是一个类,它通过截取函数调用和在函数调用之前、之后或之后运行代码来修改公共类函数的行为。
局限性
拦截器不能用于下列任何一个:
-
Magento\Framework\Interception
引导对象实例化之前
- Final methods
- Final classes
- 至少包含一个最终公开方法的任何类
- Non-public methods
- Static methods
__construct
- 虚拟类型
声明一个拦截器
拦截器类必须声明在 di.xml
文件在你的模块中:
您必须指定这些元素:
-
type name
. 一个拦截器观察者类或接口
-
plugin name
. 拦截器名称
-
plugin type
. 拦截器类型,指定此元素时使用下列命名约定: \Vendor\Module\Plugin\<ModelName>Plugin
.
示例代码:
函数之后拦截示例代码:
Around methods示例代码
- 依赖注入
- Events(事件)和observers(观察者)