Laravel 5.1 Singleton始终是新实例

时间:2015-11-04 10:19:01

标签: php singleton laravel-5.1

面对Laravel的IoC和Singleton的问题。

我有以下单身类:

class ConcreteClass
{
    function __construct() {Log::info('I iz created...');}
}

以下服务提供商:

class ConcreteClassServiceProvider extends ServiceProvider
{
    public function register()
    {
        $this->app->singleton('ConcreteClass', function () {
            return new ConcreteClass();
        });
    }
}

然而,对于每个App::make('ConcreteClass'),单个请求中的public function __construct(ConcreteClass $concrete)将导致日志具有I iz created...,这使得单例事物在Laravel中非常有效。我很可能错误的配置。请帮帮我。谢谢。

1 个答案:

答案 0 :(得分:0)

我不确定你如何使用你的实例,但它可能是命名空间的东西。当我尝试通过指定完整路径来实例化我的单例时,例如:

@inject('foo', 'App\.....\FooSingleton');

它不起作用。

我必须只指定没有路径的名称,即:

@inject('foo', 'FooSingleton');

为什么呢?我不知道。这对我来说仍然是一个谜。