Prestashop:如何覆盖包含其他 classes 的文件中包含的模块 class?
Prestashop: how to override a module class contained in a file that includes other classes?
prestashop 覆盖系统通过使用文件命名方案像许多其他系统一样工作。所以基本上,我将在 /overrides/classes 中创建一个 class,在 /classes 中使用相同的 class 和另一个文件名,只是为了简化。好吧,我必须覆盖它(使用最新的 prestashop 版本可以覆盖模块,而以前我们不能):
include_once(dirname(__FILE__).'/MailAlert.php');
class MailAlerts extends Module{
[....]
}
我可以用这个覆盖它:
class MailAlertsOverride extends MailAlerts{
[....]
}
好吧,它有效,文件和 class 得到识别,但我在使用最初包含的 MailAlert class 时遇到了问题。我不能重新包含它,但如果我不包含它,模块会要求它。
我不想修改父级 class。有办法解决这个问题吗?
好吧,我错了:上面的代码可以正常工作:)
对于那些不知道的人(这是一个相对较新的 prestashop 功能),您可以覆盖 /override/modules/[modulename]/[modulename.php]
中的模块
并使用特殊的 class 命名,您可以在上面阅读:modulenameOverride extends modulename
prestashop 覆盖系统通过使用文件命名方案像许多其他系统一样工作。所以基本上,我将在 /overrides/classes 中创建一个 class,在 /classes 中使用相同的 class 和另一个文件名,只是为了简化。好吧,我必须覆盖它(使用最新的 prestashop 版本可以覆盖模块,而以前我们不能):
include_once(dirname(__FILE__).'/MailAlert.php');
class MailAlerts extends Module{
[....]
}
我可以用这个覆盖它:
class MailAlertsOverride extends MailAlerts{
[....]
}
好吧,它有效,文件和 class 得到识别,但我在使用最初包含的 MailAlert class 时遇到了问题。我不能重新包含它,但如果我不包含它,模块会要求它。
我不想修改父级 class。有办法解决这个问题吗?
好吧,我错了:上面的代码可以正常工作:)
对于那些不知道的人(这是一个相对较新的 prestashop 功能),您可以覆盖 /override/modules/[modulename]/[modulename.php]
并使用特殊的 class 命名,您可以在上面阅读:modulenameOverride extends modulename