没有命名空间的 Composer 加载 class

Composer load class without Namespace

Amazon 的 MWS PHP 客户端库只是一个没有任何命名空间的 zip 文件,有没有办法将此库与 Laravel 应用程序或任何使用 composer 进行依赖管理的应用程序一起使用。

当然可以,只需在 Laravel 应用程序中创建您自己的库目录即可。我通常将我的保存在 app 目录中,并将其命名为 Libraries。将源文件转储到文件夹中,例如 AmazonMWS.

.config.inc.php 带有自动加载器,但不会使用。相反,您可能只在 Laravel 项目中打开 composer.json 并告诉它自动加载针对配置的新库目录。例如:

"autoload-dev": {
    "classmap": [
        "app/Libraries/AmazonMWS/Client.php"
    ]
}

确保 config.inc.php 可以在 AmazonMWS 根目录下访问。

然后 运行 composer dump-autoload 重新生成自动加载器。如果操作正确,那么您应该能够在没有命名空间的情况下实例化任何 MWS 类。

在您的控制器中,包括以下内容use

use \MarketplaceWebServiceProducts_Client;

现在您可以按预期调用您的服务了:

$config = [...];

$service = new MarketplaceWebServiceProducts_Client(
    AWS_ACCESS_KEY_ID,
    AWS_SECRET_ACCESS_KEY,
    APPLICATION_NAME,
    APPLICATION_VERSION,
    $config);

或者只是省略 use \MarketplaceWebServiceProducts_Client; 并直接使用命名空间前缀实例化,您自己选择。