我在为我的 Laravel 应用程序创建服务时遇到问题。我希望使用此服务轻松地与 API 通信以执行 IO 操作。具体来说,我的 Laravel 应用程序需要与 InvoiceNinja 通信。我正在使用 invoiceninja/sdk-php 来促进这种交流。根据他们的文档,它是这样使用的:
require __DIR__ . '/vendor/autoload.php';
use InvoiceNinja\Config as NinjaConfig;
use InvoiceNinja\Models\Client; // Model can be Invoice, Payment, etc
NinjaConfig::setURL('https://ninja.dev/api/v1');
NinjaConfig::setToken('Your Token');
$clients = Client::all();
上面的代码片段是使用 API 获取客户端列表的示例。现在,由于我使用的是 Laravel,我没有看到每次需要向 API 发送请求时都需要设置 API URL 和 Token。所以我决定使用服务提供商。以下是我在InvoiceNinjaServiceProvider.php
注册方法中的代码:
$this->app->singleton(NinjaConfig::class, function ($app) {
NinjaConfig::setURL(config('invoice-ninja.API_URL')); // I created a config/invoice-ninja.php which has these variables set
NinjaConfig::setToken(config('invoice-ninja.API_TOKEN'));
});
然后我在config/app.php
. 我认为这足以在我的控制器中使用 API,如下所示:
use InvoiceNinja\Models\Client;
public function index(InvoiceNinjaServiceProvider $invoiceNinja)
{
$clients = Client::all();
dd($clients); // To test that I actually receive data
}
但我得到一个错误Unresolvable dependency resolving [Parameter #0 [ <required> $app ]] in class Illuminate\Support\ServiceProvider
。我不太熟悉服务提供商,我希望那里的人能指出我正确的方向以使其发挥作用。
谢谢你。谢谢!