我在Laravel中有自定义服务:
<?php
namespace App\Library\Services;
class RegisterCustomerService
{
public function do()
{
return 'Output from DemoOne';
}
}
在什么情况下,我应该为此服务创建提供程序?
我可以使用RegisterCustomerService
作为特定类的组成,例如:
$c = new RegisterCustomerService();
还是我有义务创建提供商?
答案 0 :(得分:1)
仅当服务需要自定义配置时才需要服务提供者。您可以在构造函数中键入任何类的提示,Laravel会尝试将其解析为实例。
使用配置值配置服务的示例服务提供商如下所示:
class MyServiceProvider extends ServiceProvider
{
public function register()
{
$this->app->singleton(MyCustomService::class, function ($app) {
return new MyCustomService(config('api_token'));
});
}
}
用法:
class ProjectController {
// Receives the service configured by the service provider above.
public function __construct(MyCustomService $service){
$this->service = $service;
}
}
有关服务提供商的更多详细信息:https://laravel.com/docs/5.8/providers