【问题标题】:Magento chain of inheritance. Good or bad practice?Magento 继承链。好的做法还是坏的做法?
【发布时间】:2016-11-10 16:47:16
【问题描述】:

我刚开始使用 Magento (1.9) 我已经读过 Magento 是面向对象设计的,这是一个很好的观点,但是在深入研究了核心和一些第三方模块之后,我觉得类继承很奇怪链中的其他人(这可以达到 4 或 5 级继承)。

这是一个好习惯吗?


final class I4_TaskManagerOrderXml_Block_Adminhtml_System_Config_Button_Runnow_Orderxml
    extends I4_TaskManager_Block_Adminhtml_System_Config_Button_Runnow_Import {} 

class I4_TaskManager_Block_Adminhtml_System_Config_Button_Runnow_Import
 extends Mage_Adminhtml_Block_System_Config_Form_Field { //some stuff }

class Mage_Adminhtml_Block_System_Config_Form_Field
 extends Mage_Adminhtml_Block_Abstract
 implements Varien_Data_Form_Element_Renderer_Interface
{ //some stuff }

class Mage_Adminhtml_Block_Abstract extends Mage_Core_Block_Template
{ … }

【问题讨论】:

  • 请使用命名空间,这样您就可以将那些过长的类名缩短为可行的...

标签: php oop magento object


【解决方案1】:

Magento 使用了非常多的抽象层,因此第三方开发人员可以更灵活地挂钩代码。

(几乎)Magento 中的每个类都可以通过扩展重写。这意味着您可以轻松地将自己的方法添加到现有类中,而无需触及核心代码。

就 OO 而言:每个平台使用的抽象层的数量都不同。例如,Magento 中的产品模型具有以下链:

  • Varien_Object,这是一个以 Magento 的神奇 getter 和 setter 功能而闻名的类
  • Mage_Core_Model_Abstract,添加了基本的模型功能(例如加载和保存)。
  • Mage_Catalog_Model_Abstract,例如为产品和类别添加基本目录功能。
  • Mage_Catalog_Model_Product,这是一个基础产品。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-19
    • 2021-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-29
    • 2013-01-24
    相关资源
    最近更新 更多