如何解决?
您有 3 种解决冲突的选择:
- 将一个冲突文件中的代码合并到另一个文件中,并在一个文件中关闭重写 config.xml
- 关闭一个 config.xml 中的重写,然后使冲突的扩展 PHP 文件扩展另一个扩展
- 使用 <depends> 功能使一个扩展依赖于另一个。然后他们将按该顺序重写
您选择哪一个确实取决于您需要走多远。大多数情况下,即使一个类可能与其中的实际方法冲突,也可能不会。在这种情况下,我会选择选项 3。如果类中有冲突的方法,则选项 1 或 2 适用。
选项 2 示例
所以最初你可能有这样的事情:
类 A_Extension_Model_Type_Onepage 扩展 Mage_Checkout_Model_Type_Onepage
您将其更改为:
类 A_Extension_Model_Type_Onepage 扩展 B_Extension_Model_Type_Onepage
完成此操作后,您需要更改扩展 B config.xml 文件,注释掉现在从 A 继承的冲突的“<rewrite>”块。
选项 3 的示例
假设您有 2 个扩展名 Foo_A 和 Foo_B。在文件 Foo_B 的模块中(在 app/etc/modules 下),您将添加以下内容:
<取决于Foo_A />
现在 Magento 将按此顺序加载扩展。所以实际上 Foo_B 类将首先加载,然后是 Foo_A,然后是基础 Magento。