在 Symfony 中使用库

Using a library in Symfony

我正在尝试将 Mandrill API 与 Symfony 框架一起使用。我使用 composer (composer require mandrill/mandrill) 安装了 API。这会将库放在 /vendor 目录中,但我在实际使用 Mandrill class 时遇到了问题。

<?php

namespace App\Services;

use App\Services\Utilities;

class Email {

    public function __construct($mandrill_api_key, Utilities $u){

        $mandrill = new Mandrill($this->mandrill_api_key); // throws exception
    }
}

我得到的错误如下:"Attempted to load class "Mandrill" from namespace "App\Services"。 您是否忘记了另一个命名空间的 "use" 语句?"

显然,它试图从服务命名空间加载 Mandrill class。但是我需要那个命名空间来加载 Utilities 服务。

我尝试添加行 use Mandrill\Mandrill - 以从 vendor 的 mandrill 目录中加载那个 mandrill class,但这会引发相同的命名空间错误,但对于 Mandrill 命名空间。

API 文档有以下内容:

<?php
    require_once 'mandrill-api-php/src/Mandrill.php'; //Not required with Composer
    $mandrill = new Mandrill('YOUR_API_KEY');
?>

require_once 是我之前在 php 5.x 中包含此 class 的方式,但我无法将其包含在 symfony/php 7.x 中

如果你想从根命名空间访问一个类名,你需要在它前面加上一个反斜杠:

new \Mandrill(...)

参考文献: