magento中重写和重写的区别

magento中重写和重写的区别,magento,magento-1.7,Magento,Magento 1.7,在Magento中,术语重写和重写是相同的。我找了很多,但没有找到任何答案 谢谢简短回答:是的,不过这取决于你和谁说话 所有重写都是重写,但并非所有重写都是重写。Magento中的重写应仅指基于配置的类重写。框架使用工厂方法实例化MVC类型: Mage\u Core\u Model\u Layout->createBlock() Mage::helper() Mage::getModel() Mage::getResourceModel() 等等 这些方法通常将类组(例如catalog)与类

在Magento中,术语重写和重写是相同的。我找了很多,但没有找到任何答案

谢谢

简短回答:是的,不过这取决于你和谁说话

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

  • Mage\u Core\u Model\u Layout->createBlock()
  • Mage::helper()
  • Mage::getModel()
  • Mage::getResourceModel()
  • 等等
这些方法通常将类组(例如
catalog
)与类前缀(例如
Mage\u catalog\u Model
)相匹配,以实例化特定类(例如
Mage::getModel('catalog/product')
生成
Mage\u catalog\u Model\u product
)。此映射允许开发人员指定与类参数关联的特定xpath(例如,
'catalog/product'
&
global/models/catalog/rewrite/product
),以指定要实例化的备用类。因此,开发人员有责任根据需要使用继承来实现正确的覆盖和扩展行为

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

  • 应用程序/代码/社区/
  • 应用程序/代码/核心/
  • 解放党/
这种类型的重写应该被视为更改核心代码的最后一种方式。它有合法的用例(特别是对于遵守DRY),但在升级中可能不明显