Magento:覆盖事件观察者核心类是否安全?

时间:2011-04-29 02:50:16

标签: php events magento override observer-pattern

假设核心中有一个事件观察者类。我可以覆盖它。但是,它安全吗?我的意思是,它是否会影响观察者类的其他功能?

就像,如果核心观察者类中有两个函数,并且我只覆盖了一个函数。然后,其他功能将像以前一样安全地工作。

我认为它类似于模型覆盖,应该是安全的。我是对的吗?

修改: -

例如,

  • 核心中有一个 CoreClassA 类。
  • CoreClassA 中有 coreFunctionA 功能。
  • coreFunctionA 中调度 core_event_a 事件。
  • 另一个核心模块 CoreModuleB 正在使用 core_event_a 创建事件观察者。
  • 因此,每当调度 core_event_a 时,都会调用 CoreModuleB 的事件观察者。
  • 假设, CoreModuleB 的事件观察者包含两个函数。一个用于 core_event_a 调度操作(我们将其命名为 eventDispatchA ),另一个用于其他事件调度操作(假设 eventDispatchX )。
  • 在我的自定义模块中,我想覆盖 eventDispatchA 基本上,我想更改eventDispatchA中的一些代码,或者我可能只想跳过/忽略此函数。我可以覆盖它。 但是,如果我这样做会影响 eventDispatchX 吗?或者,还有其他更好的方法而不是覆盖事件观察者吗?

1 个答案:

答案 0 :(得分:2)

很可能它会,但如果你覆盖其他人可能正在使用它的东西,总是值得做类似的东西:

    public function samefunction($object){
        if(mymodueleisused){
            //do your different thing
        } else {
           return parent::samefunction();
        }
    }

正如其他人告诉你的那样:“如果你需要更改/覆盖核心,那么你可能做错了”,最好通过描述你想做什么以及为什么以不同的方式提出问题