PrestaShop 模块 类 未找到(命名空间)
PrestaShop module classes not found (namespaces)
这是我的 PrestaShop 模块文件结构:
-mymodule/
--src/
--mymodule.php
---Presta/
---Webhooks.php
----Controller/
-----MyPrestaController.php
mymodule.php 找不到 Webhooks.php class,我试过在 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 时,它会抛出致命错误,因为自动加载初始化不应在 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 中,而且我还有其他 class 需要在 webhook 方法中实现。有没有办法在主模块文件(mymodule.php)中使用其他classes?我错过了什么吗?
您需要使用完整路径调用您的 class 或在您的模块文件顶部声明一个 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);
}
这是我的 PrestaShop 模块文件结构:
-mymodule/
--src/
--mymodule.php
---Presta/
---Webhooks.php
----Controller/
-----MyPrestaController.php
mymodule.php 找不到 Webhooks.php class,我试过在 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 时,它会抛出致命错误,因为自动加载初始化不应在 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 中,而且我还有其他 class 需要在 webhook 方法中实现。有没有办法在主模块文件(mymodule.php)中使用其他classes?我错过了什么吗?
您需要使用完整路径调用您的 class 或在您的模块文件顶部声明一个 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);
}