php - 在 Prestashop 模块中使用命名空间

标签 php namespaces prestashop prestashop-1.6 prestashop-1.7

我们如何使 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();
或者如果您想根据需要使用命名空间。
您可以为主文件创建一个空类,并为父文件创建一个带有命名空间的类。
所以我们有 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
    
}

关于php - 在 Prestashop 模块中使用命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65490962/

相关文章:

php - 迁移到准备好的语句

fortran - 编译不同的文件,其中函数和公共(public) block 具有相同的名称

php - 在哪里可以找到多商店 prestashop 表的前缀

r - 从命名空间访问(导出)函数

web-services - Prestashop:将产品添加到新购物车

php - 合并 dev 和 live prestashop 数据库

php - 获取退出代码(一)在Symfony中使用Process的Error输出中的错误和输出

php - Laravel 多个查询不起作用的地方

带有多个嵌套 SQL 查询的 PHP 循环

php - Laravel - 调用未定义的方法 TrainingFacade::save()