Laravel容器返回多个Singleton实例

时间:2019-01-07 04:34:16

标签: php singleton laravel-5.7

我创建了一个CustomProvider,并将其添加到app.php提供程序数组中,并将一个类注册为单例:

<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use App\ReserveCart;

class CustomProvider extends ServiceProvider
{
    /**
     * Bootstrap services.
     *
     * @return void
    */
    public function boot()
    {
        //
    }

    /**
     * Register services.
     *
     * @return void
     */
    public function register()
    {
        $this->app->singleton('App\ReserveCart', function($app){
            return new ReserveCart;
        });
    }
}

但是每次我用$rc = resolve('App\ReserveCart');请求对象时,它都会不断为我提供该对象的不同实例,而不是一个实例(我已经做了一些回声跟踪)。

还尝试将依赖项传递给Laravel Documentation相应的方法。例如

public function foo(App\ReserveCart $rc){
    //
}

但问题仍然存在。

1 个答案:

答案 0 :(得分:1)

下面的输出是否相同?

$rc = resolve('App\ReserveCart');
$rc1 = resolve('App\ReserveCart');
dd(spl_object_hash($rc), spl_object_hash($rc1));