如何在 prestashop 中将 php class 导入到 rootpay.php class

How can I import php class to rootpay.php class in prestashop

我正在尝试将 /var/www/html/prestashop/webs/modules/rootpay/override/Rootpay/Client/Service/EcomCheckoutFormServiceClient.php class 添加到 /var/www/html/prestashop/webs/modules/rootpay/rootpay.php.

我在 rootpay.php class 中使用 import 就是这样

require_once _PS_MODULE_DIR_ . 'rootpay/override/Rootpay/Client/Service/EcomCheckoutFormServiceClient.php';

EcomCheckoutFormServiceClient.php class:

<?php

namespace Rootpay\Client\Service;

use Rootpay\Client\Configuration\ClientConfiguration;
use Rootpay\Client\HttpClientTemplate;

class EcomCheckoutFormServiceClient extends BasePaymentServiceClient
{
    public static function fromConfiguration(ClientConfiguration $configuration)
    {
        return new EcomCheckoutFormServiceClient($configuration, new HttpClientTemplate());
    }
}
?>

当我在管理页面打开模块页面时。我看到这个错误:

[PrestaShop] Fatal error in module file :/var/www/html/prestashop/webs/modules/rootpay/override/Rootpay/Client/Service/EcomCheckoutFormServiceClient.php: Class 'Rootpay\Client\Service\BasePaymentServiceClient' not found.

BasePaymentServiceClient 使用 EcomCheckoutFormServiceClient 相同的命名空间。

不幸的是,Prestashop 中的自动加载器对命名空间一无所知。
您必须在 rootpay.php.

的顶部包含所有依赖项

我假设您正试图包含一个与 Prestashop 不兼容的 "module"。

因此,在 rootpay.php 的顶部,您必须包括:

<?php 
require_once _PS_MODULE_DIR_ . 'rootpay/override/Rootpay/Client/Configuration/ClientConfiguration.php';
require_once _PS_MODULE_DIR_ . 'rootpay/override/Rootpay/Client/HttpClientTemplate.php';
require_once _PS_MODULE_DIR_ . 'rootpay/override/Rootpay/Client/Service/BasePaymentServiceClient.php';
require_once _PS_MODULE_DIR_ . 'rootpay/override/Rootpay/Client/Service/EcomCheckoutFormServiceClient.php';

如果你的整个 "module" 都是基于命名空间的,恐怕你将不得不重写其中的大部分内容。