如何解决在Laravel中创建服务提供商的正确方法
我无法为Laravel应用程序创建服务。我希望使用此服务轻松与API通信以执行IO操作。具体来说,我的Laravel应用程序需要与InvoiceNinja通信。我正在使用invoiceninja / sdk-PHP来促进这种交流。根据{{3}},它的用法如下:
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和令牌。因此,我决定使用服务提供商。以下是我在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
。我对服务提供商不是很精通,我希望那里的人可以指出正确的方向,以使其正常工作。
谢谢。谢谢!
解决方法
绑定单例时,您应该返回已解析的实例,该实例将作为参数注入您的API.UserAPI().readUserDetails()
方法中。
来自doc:
index
请注意 $this->app->singleton('HelpSpot\API',function ($app) {
return new \HelpSpot\API($app->make('HttpClient'));
});
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。