我应该在Laravel中为服务创建单独的提供程序吗?

时间:2019-08-18 11:13:59

标签: laravel laravel-5 laravel-5.8

我在Laravel中有自定义服务:

<?php
namespace App\Library\Services;

class RegisterCustomerService
{
    public function do()
    {
        return 'Output from DemoOne';
    }

}

在什么情况下,我应该为此服务创建提供程序?

我可以使用RegisterCustomerService作为特定类的组成,例如:

$c = new RegisterCustomerService();

还是我有义务创建提供商?

1 个答案:

答案 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