有许多Mage_Eav_Model_Entity_Setup
的后代,例如
class Mage_Checkout_Model_Resource_Setup extends Mage_Eav_Model_Entity_Setup
{
}
但他们都是空的。
拥有所有这些空类有什么用?
是否只是为了扩展并保留在同一模块的不同设置脚本中共享的常用功能?
我在想这些自定义类可能会触发某种模块自动检测,但无法找到这方面的任何提示。
(基于Magento认证学习指南:使用自定义安装类在自定义模块中操作EAV属性有什么好处。)
答案 0 :(得分:7)
首先,您需要了解Magento将其代码组织到模块中。模块背后的想法是帮助和强制开发人员以他们的代码不会干扰其他系统代码的方式编写代码。
其次,当模块需要在Magento数据库中创建持久性数据时,您需要创建setup resource(自链接)。设置资源是一个安装程序脚本,可以通过其父类访问特殊的函数/方法。这些特殊的函数/方法可以帮助开发人员在数据库中为其数据结构创建和填充表。其中许多方法都可以在 Mage_Eav_Model_Entity_Setup
类中找到。
当开发人员为自己的模块创建设置资源时,会创建一个新类。通过创建一个新类,他们可以确保他们的设置资源需要的任何特殊方法都可以存放。 Mage_Checkout_Model_Resource_Setup
类是Mage_Checkout
模块的设置资源类。恰好这个模块不需要额外的方法。早期版本的Magento 强制(至少,我相信他们这样做)模块开发人员如果想要使用设置资源功能,就可以创建自己的设置资源类。这样做是因为,如第一段所述,Magento的模块系统可以帮助确保模块A的代码不会干扰模块B.
答案 1 :(得分:2)
为了理解逻辑,你必须给Alan Storm's tutorials一个读数。也许你应该按照正确的顺序阅读它们,但你也可以直接跳到this one。他们肯定帮助我了解几年前发生的事情。