5

Magento 中的术语覆盖和重写是否相同。我已经搜索了很多,但没有找到任何答案。

谢谢

4

1 回答 1

8

简短的回答:是的,尽管这取决于您与谁交谈。

所有重写都是覆盖,但并非所有覆盖都是重写。Magento 中的重写应该只引用基于配置的类覆盖。框架使用工厂方法来实例化 MVC 类型:

  • Mage_Core_Model_Layout->createBlock()
  • Mage::helper()
  • Mage::getModel()
  • Mage::getResourceModel()
  • ETC....

这些方法通常将类组(例如catalog)与类前缀(例如Mage_Catalog_Model)匹配,以便实例化特定类(例如Mage::getModel('catalog/product')yield Mage_Catalog_Model_Product)。'catalog/product'此映射允许开发人员指定与类参数(例如& )关联的某个 xpathglobal/models/catalog/rewrite/product以指定要实例化的备用类。从那里开始,开发人员有责任酌情使用继承来实现正确的覆盖和扩展行为。

还有其他实现覆盖的机制,其中最常见的是所谓的“包含路径破解”,它允许按照以下顺序在更高级别的目录中(重新)定义来自“较低”自动加载目录的类优先级(注意app/code/local/):

  • 应用程序/代码/社区/
  • 应用程序/代码/核心/
  • 库/

这种覆盖风格应被视为更改核心代码的最后一种方法。它有合法的用例(尤其是遵守 DRY),但在升级中可能并不明显。

于 2013-06-14T13:09:51.987 回答