在 Prestashop 模块中使用命名空间
Using namespaces in Prestashop module
我们如何使 Prestashop 模块与使用名称空间的 1.6 版兼容,因为我正在查看 Prestashop 文档,其中说 PrestaShop 1.6 does not fully support namespaces. They throw some issues when used in specific places.
是否有替代方法?
参考:https://devdocs.prestashop.com/1.7/modules/core-updates/1.6/
您不需要为主文件使用命名空间或“使用”一词。
我认为您可以在代码中只使用全名,例如:
$data = \PrestaShop\Some\ClassName::getData();
或者如果你想根据需要使用命名空间。
您可以为主文件创建一个空 class,并为父文件创建一个带有您的命名空间的 class。
所以我们有 modules/yourmodule/yourmodule.php 作为主文件
<?php
if (!defined('_PS_VERSION_')) {
exit;
}
require_once(dirname(__FILE__) .'/classes/yourmoduleparent.php');
class YourModule extends \YourModule\Bootstrap {
// The module codes have been transferred
// to the "/classes/yourmoduleparent.php" file.
}
在 modules/yourmodule/classes/yourmoduleparent.php
<?php
namespace YourModule;
if (!defined('_PS_VERSION_')) {
exit;
}
use Module;
use Configuration;
use Context;
use Tools;
use Controller;
use PrestaShopException;
use Hook;
class Bootstrap extends Module {
// Your module codes
}
我们如何使 Prestashop 模块与使用名称空间的 1.6 版兼容,因为我正在查看 Prestashop 文档,其中说 PrestaShop 1.6 does not fully support namespaces. They throw some issues when used in specific places.
是否有替代方法?
参考:https://devdocs.prestashop.com/1.7/modules/core-updates/1.6/
您不需要为主文件使用命名空间或“使用”一词。
我认为您可以在代码中只使用全名,例如:
$data = \PrestaShop\Some\ClassName::getData();
或者如果你想根据需要使用命名空间。 您可以为主文件创建一个空 class,并为父文件创建一个带有您的命名空间的 class。
所以我们有 modules/yourmodule/yourmodule.php 作为主文件
<?php
if (!defined('_PS_VERSION_')) {
exit;
}
require_once(dirname(__FILE__) .'/classes/yourmoduleparent.php');
class YourModule extends \YourModule\Bootstrap {
// The module codes have been transferred
// to the "/classes/yourmoduleparent.php" file.
}
在 modules/yourmodule/classes/yourmoduleparent.php
<?php
namespace YourModule;
if (!defined('_PS_VERSION_')) {
exit;
}
use Module;
use Configuration;
use Context;
use Tools;
use Controller;
use PrestaShopException;
use Hook;
class Bootstrap extends Module {
// Your module codes
}