Magento 为什么XmlConnect依赖于这么多模块?

Magento 为什么XmlConnect依赖于这么多模块?,magento,Magento,我试图为一个精简的商店禁用一些Magento的核心模块。我得到一个错误,说XmlConnect依赖于我禁用的一个模块。我调出XmlConnect的模块XML文件,看到了它可怕的依赖项列表: <depends> <Mage_Checkout /> <Mage_Paypal /> <Mage_Usa /> <Mage_Tax /> <Mage_Weee /> <Mage_Ca

我试图为一个精简的商店禁用一些Magento的核心模块。我得到一个错误,说XmlConnect依赖于我禁用的一个模块。我调出XmlConnect的模块XML文件,看到了它可怕的依赖项列表:

<depends>
    <Mage_Checkout />
    <Mage_Paypal />
    <Mage_Usa />
    <Mage_Tax />
    <Mage_Weee />
    <Mage_Catalog />
    <Mage_CatalogSearch />
    <Mage_CatalogInventory />
    <Mage_Bundle />
    <Mage_Wishlist />
    <Mage_Rating />
    <Mage_Review />
</depends>

考虑到像编目和签出这样的关键模块依赖于XmlConnect,实际上不可能禁用,因此也不可能禁用并非总是必需的模块,如Wishlist和Review


为什么XmlConnect依赖于这么多附带模块?这些依赖关系是否可能是反向的?移除它们安全吗?

假设您正在谈论位于的
Mage\u XmlConnect
模块

app/code/core/Mage/XmlConnect
然后,它有一个“可怕”的依赖项列表,因为该模块具有“可怕”数量的功能

Mage_XmlConnect
模块为Magento Mobile基于手机的商店应用程序实现后端。(如果你聪明的话,你可以用它来做你的朋友。)。它依赖于所有这些模块,因为它使用这些模块中的对象来实现此功能

虽然我不是构建Magento移动应用程序团队的一员,但我认为有一个要求,即它包括愿望列表项和评论,因此,
Mage\u XmlConnect
模块取决于评论和愿望列表模块。从理论上讲,Magento移动应用程序本身可以分为多个模块,但添加到Magento的每个模块都会影响性能和复杂性。考虑到Magento团队当时的工作节奏,很容易理解为什么他们选择在单个模块中实现所有功能

同样重要的是要记住,虽然可以禁用模块,但Magento从来没有考虑过这个目标。实际上,模块系统的存在更多地是为了防止模块之间的代码污染,并允许多个团队(或单个开发人员)在不影响其他开发人员的情况下处理其功能。隔离每个模块的功能,使系统能够独立于任何特定模块运行将是一件好事,但这样做对Varien/Magento Inc.来说几乎没有投资回报。因此它没有完成。您可能不喜欢它,但大多数具有商业/业务含义的软件都是这样开发的


如果要使用
Mage\u XmlConnect
,则需要启用其他模块。但是,
Mage_XmlConnect
并不是运行存储所必需的,并且可以(很可能)安全地禁用

然而,XmlConnect的加载能力取决于所有其他模块是否处于活动状态,这可能会更好地发挥作用;没有其他模块依赖于XmlConnect负载,至少在1.5.1.0中是这样。如果更高版本中没有其他模块在其依赖项列表中列出XmlConnect,则可以将其行设置为false并将其关闭。