4

我试图为精简商店禁用 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 依赖于 Catalog 和 Checkout 等关键模块,因此实际上无法禁用,因此也无法禁用 Wishlist 和 Review 等并非总是必需的模块。

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

4

1 回答 1

4

假设您正在谈论Mage_XmlConnect位于

app/code/core/Mage/XmlConnect

然后它有一个“可怕”的依赖关系列表,因为该模块具有“可怕”数量的功能。

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

虽然我不是构建 Magento Mobile 应用程序的团队的一员,但我认为它需要包含愿望清单项目和评论,因此该Mage_XmlConnect模块依赖于评论和愿望清单模块。从理论上讲,Magento Mobile 应用程序本身可以拆分为多个模块,但添加到 Magento 的每个模块都具有性能影响和复杂性影响。考虑到 Magento 团队当时需要的工作速度,很容易看出他们为什么选择在单个模块中实现所有内容。

同样重要的是要记住,虽然可以禁用模块,但 Magento 的设计从来没有考虑到这个目标。在实践中,模块系统的存在更多是为了防止模块之间的代码污染,并允许多个团队(或单个开发人员)在不影响其他开发人员的情况下开发他们的功能。隔离每个模块的功能以便系统可以独立于任何特定模块运行会很整洁——但 Varien/Magento Inc. 这样做的投资回报率很小。因此没有完成。您可能不喜欢它,但这就是大多数具有商业/商业意义的软件的开发方式。

如果要使用Mage_XmlConnect,则需要启用其他模块。但是, Mage_XmlConnect运行商店并不严格需要,并且可以(可能)安全地禁用。

于 2013-04-18T17:44:36.537 回答