我惊讶地发现默认情况下不共享Laravel实例。
我发现声明提供程序的“最简单”方法如下:
<?php
namespace App\Providers;
use App\SomeService;
use Illuminate\Support\ServiceProvider;
class SomeServiceServiceProvider extends ServiceProvider {
protected $defer = true;
public function register() {
$this->app->singleton(SomeService::class);
}
public function provides() {
$provides = parent::provides();
$provides[] = SomeService::class;
return $provides;
}
}
TMHO依赖项注入容器中的“标准”服务是共享实例。我很好奇他们为什么选择这种方法?
另外,如果您知道一种声明共享实例的简单方法,那么这是一个奖励。