Laravel容器返回多个Singleton实例

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Laravel容器返回多个Singleton实例相关的知识,希望对你有一定的参考价值。

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

<?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文档中的方法。例如

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

但问题仍然存在。

答案

输出是否低于相同?

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

以上是关于Laravel容器返回多个Singleton实例的主要内容,如果未能解决你的问题,请参考以下文章

Singleton与Prototype

Laravel:区别 App::bind 和 App::singleton

spring中bean的作用域属性singleton与prototype的区别

Spring框架参考手册(4.2.6版本)翻译——第三部分 核心技术 6.5.1 单例(singleton)作用域

在Spring中,Bean有几种作用域?

在Spring中,Bean有几种作用域