Php 如果重写另一个模块使用的模块中的类,会发生什么情况

Php 如果重写另一个模块使用的模块中的类,会发生什么情况,php,magento,overriding,Php,Magento,Overriding,我正在处理一个模块,我需要覆盖一个块文件以添加新功能。我知道如何重写块、模型和控制器,但我想知道,如果我扩展的类被另一个模块类使用,会发生什么 上述场景如下: 在我的模块config.xml中,我将块文件覆盖为: <blocks> <checkout> <rewrite> <cart_shipping>Company_Module_Block_Cart_Shipping</cart_shippi

我正在处理一个模块,我需要覆盖一个块文件以添加新功能。我知道如何重写块、模型和控制器,但我想知道,如果我扩展的类被另一个模块类使用,会发生什么

上述场景如下:
在我的模块config.xml中,我将块文件覆盖为:

<blocks>
    <checkout>
        <rewrite>
            <cart_shipping>Company_Module_Block_Cart_Shipping</cart_shipping>
        </rewrite>
    </checkout>
</blocks>

公司\模块\模块\推车\运输
并重写一个方法
getEstimateRates()

但是还有另一个模块,其块文件扩展为
Mage\u Checkout\u block\u Cart\u Shipping
。我的问题是—

“该类是否能够看到在我的模块中重写的类中所做的更改?”

“是否必须覆盖其他模块块文件?”


您的一个或另一个扩展块将无法工作。它可以通过从其中一个扩展您的或另一个块来修复

例如,
Company\u Module\u Block\u Cart\u Shipping
是您的区块,
Other\u Module\u Block\u Cart\u Shipping
是其他区块


如果从core扩展了
Other_Module_Block_Cart_Shipping
,则必须从
Other_Module_Block_Cart_Shipping

扩展公司的
Company_Module_Block_Cart_Shipping

首先加载Mage_All.xml, 那么全部 Mage.*.xml 并按照字母顺序在其前面添加自定义module.xml

如果在etc/modules/module definition xml中提供了dependens标记,则可以更改序列


希望这能消除您的疑虑。

这可能会有所帮助
http://stackoverflow.com/questions/23884838/how-to-override-community-block-module-with-php-file-in-magento/23885156#23885156
这就是您不应该覆盖而应该使用事件的原因之一