簡體   English   中英

找不到PrestaShop模塊類(命名空間)

[英]PrestaShop module classes not found (namespaces)

這是我的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 "src\Presta".
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 
GuzzleHttp\Client::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) 
{ 
    \src\Presta\Webhooks::myStaticWebhooksMethod($params);
}

要么

use src\Presta\Webhooks; // before module class declaration

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM