未找到PrestaShop模块类(名称空间)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了未找到PrestaShop模块类(名称空间)相关的知识,希望对你有一定的参考价值。

这是我的PrestaShop模块文件结构:

-mymodule/
--src/
--mymodule.php
---Presta/
---Webhooks.php
----Controller/
-----MyPrestaController.php

mymodule.php找不到Webhooks.php类,我试过在mymodule.php中使用,但它仍然提供错误:

ClassNotFoundException in mymodule.php line 55:
Attempted to load class "Webhooks" from namespace "srcPresta".
Did you forget a "use" statement for another namespace?

当我尝试在mymodule.php中使用autoload / include / require时,它会抛出致命的错误,因为autoload初始化了东西(来自我的模块供应商),不应该在mymodule.php中初始化。 GuzzleClient在浏览网站时会发疯:

Catchable Fatal Error: Argument 3 passed to 
GuzzleHttpClient::request() must be of the type array, string given, 
called in /usr/local/ampps/www/presta/modules/mymodule/vendor/guzzlehttp/guzzle/src/Client.php on line 89 and defined

我不想把所有的钩子逻辑放在mymodule.php中,我还需要在webhook方法中实现其他类。有没有办法在主模块文件(mymodule.php)中使用其他类?我错过了什么吗?

答案

您需要使用完整路径调用类或在模块文件顶部声明use。我不确切知道命名空间Webhooks是什么,但是像这样:

public function hookActionAuthentication($params) 
{ 
    srcPrestaWebhooks::myStaticWebhooksMethod($params);
}

要么

use srcPrestaWebhooks; // before module class declaration

public function hookActionAuthentication($params) 
{ 
    Webhooks::myStaticWebhooksMethod($params);
}

以上是关于未找到PrestaShop模块类(名称空间)的主要内容,如果未能解决你的问题,请参考以下文章

致命错误:未捕获的错误:在 prestashop 中找不到类“Db”

使用 Prestashop 1.6 在模块中获取产品类别名称

在Prestashop API上创建订单:模块名称出错

Prestashop 没有错误/空白页

尝试编译时未找到名称空间错误

Prestashop - 添加模块到钩子