magento2中的Plugin机制--after方法详解

顾名思义,after插件是在观察到的方法之后运行的。在编写after插件时,有几个要点需要记住:

传递给插件的第一个参数是一个观察到的类型实例。进入插件的第二个参数是观察到的方法的结果,通常调用$result或在从observed方法返回的变量之后调用(如下面的示例:$data)。

所有其他参数都是observe方法的参数。插件必须返回相同类型的$result|$data变量,因为我们可以自由修改值。让我们来看看Magento的一个插件后实现,该实现在模块目录/etc/di.xml文件中指定:

<type name="Magento\Indexer\Model\Config\Data">
    <plugin name="indexerProductFlatConfigGet"         type="Magento\Catalog\Model\Indexer\Product\Flat\Plugin\IndexerConfigData" />
</type>

此插件的原始目标方法是Magento\Indexer\Model\Config\Data类的get方法:

public function get($path = null, $default = null) {    // The rest of the code...    return $data;}

after插件的实现是通过Magento\Catalog\Model\Indexer\Product\Flat\plugin\IndexerConfigData类的afterGet方法提供的,如以下部分示例所示:

public function afterGet(Magento\Indexer\Model\Config\Data, $data, $path = null, $default = null) {    // The rest of the code...    return $data;}

使用插件时应特别小心。虽然它们提供了很大的灵活性,但也很容易引发错误、性能瓶颈和其他不太明显的不稳定性——如果几个插件都在观察相同的方法,情况更是如此。

以上内容来源于码小课:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值