Классы модуля PrestaShop не найдены (пространства имен) - PullRequest
0 голосов
/ 08 мая 2018

Это моя файловая структура модуля 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?

Когда я пытаюсь использовать автозагрузку / include / require в mymodule.php, это приводит к фатальным ошибкам, потому что автозагрузка инициализирует материал (от моего поставщика модуля), который не должен быть инициализирован в 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)? Я что-то упустил?

1 Ответ

0 голосов
/ 09 мая 2018

Вам нужно вызвать ваш класс с полным путем или объявить 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);
}
...