【发布时间】:2015-01-19 01:19:18
【问题描述】:
我正在尝试扩展一个社区插件,并且对我来说一切看起来都是正确的,但我一定遗漏了一些东西,因为我的方法没有覆盖社区插件方法。
奇怪的是我下载了Modules Conflict Detector,它说我的插件很好地扩展了社区插件。
app/etc/modules/KNG_M2eProMods.xml
<?xml version="1.0"?>
<config>
<modules>
<KNG_M2eProMods>
<active>true</active>
<codePool>local</codePool>
<depends>
<Ess_M2ePro/>
</depends>
</KNG_M2eProMods>
</modules>
</config>
app/code/local/KNG/M2eProMods/etc/config.xml
<?xml version="1.0"?>
<config>
<modules>
<KNG_M2eProMods>
<version>0.1.0</version>
</KNG_M2eProMods>
</modules>
<global>
<models>
<M2ePro>
<rewrite>
<magento_payment>KNG_M2eProMods_Model_Magento_Payment</magento_payment>
<magento_quote>KNG_M2eProMods_Model_Magento_Quote</magento_quote>
<magento_order>KNG_M2eProMods_Model_Magento_Order</magento_order>
</rewrite>
</M2ePro>
</models>
</global>
</config>
app/code/local/KNG/M2eProMods/Model/Magento/Order.php
class KNG_M2eProMods_Model_Magento_Order extends Ess_M2ePro_Model_Magento_Order
{
private function placeOrder()
{
......
}
}
app/code/local/KNG/M2eProMods/Model/Magento/Payment.php
class KNG_M2eProMods_Model_Magento_Payment extends Ess_M2ePro_Model_Magento_Payment
{
protected $_code = 'payment_profile';
}
app/code/local/KNG/M2eProMods/Model/Magento/Quote.php
class KNG_M2eProMods_Model_Magento_Quote extends Ess_M2ePro_Model_Magento_Quote
{
private function initializeQuoteItems()
{
......
}
}
这是我要扩展的插件的 config.xml 中的一个 sn-p。 app/code/community/Ess/M2ePro/etc/config.xml
......
<models>
<M2ePro>
<class>Ess_M2ePro_Model</class>
......
</M2ePro>
......
</models>
......
这是我正在扩展的文件路径。
app/code/community/Ess/M2ePro/Model/Magento/Order.php
app/code/community/Ess/M2ePro/Model/Magento/Payment.php
app/code/community/Ess/M2ePro/Model/Magento/Quote.php
感谢您的帮助
【问题讨论】:
-
如果你想要这样做,私有函数是不可继承的
-
@subroutines 我实际上是在尝试覆盖私有函数。我以为你仍然可以覆盖它们。我错了吗?
-
不,你不能那样做。这就是为什么它们被指定为私有的。您需要在父类中将其范围更改为受保护。
-
@subroutines 我想这可以解释它。我们不会改变父类的范围,而是只修改父类。感谢您的帮助。