Prestashop:如何覆盖包含在包含其他类的文件中的模块类


Prestashop: how to override a module class contained in a file that includes other classes?

prestashop覆盖系统与许多其他系统一样,使用文件命名方案工作。因此,基本上,我将在/reverrides/classes中创建一个与/classes中的另一个具有相同类和文件名的类,只是为了简化。好吧,我必须重写这一点(对于最新的prestashop版本,模块可以重写,而对于以前的版本,我们不能重写):

include_once(dirname(__FILE__).'/MailAlert.php');
class MailAlerts extends Module{
[....]
}

我可以用这个覆盖它:

class MailAlertsOverride extends MailAlerts{
[....]
}

好吧,它可以工作,文件和类可以被识别,但我对最初包含的MailAlert类有问题。我不能重新包括它,但如果我不包括它,模块会要求它。

我不想修改父类。有办法解决这个问题吗?

好吧,我错了:上面的代码只是有效的:)

对于那些不知道的人(这是一个相对较新的预置功能),您可以覆盖/override/modules/[modulename]/[modulename.php] 中的模块

使用特殊的类命名,您可以阅读上面的内容:modulenameOverride extends modulename