首页 > 解决方案 > 为什么默认不共享 Laravel 实例?

问题描述

我惊讶地发现 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 依赖注入容器中的“标准”服务是一个共享实例。我很好奇他们为什么选择这种方法?

作为奖励,如果您知道声明共享实例的更简单方法。

标签: laraveldependency-injectioninversion-of-control

解决方案


推荐阅读