Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/245.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel 5.1 Singleton始终是新实例_Php_Singleton_Laravel 5.1 - Fatal编程技术网

Php Laravel 5.1 Singleton始终是新实例

Php Laravel 5.1 Singleton始终是新实例,php,singleton,laravel-5.1,Php,Singleton,Laravel 5.1,面对拉威尔的国际奥委会和单身人士的问题 我有以下的单身班: class ConcreteClass { function __construct() {Log::info('I iz created...');} } 以及以下服务供应商: class ConcreteClassServiceProvider extends ServiceProvider { public function register() { $this->app->s

面对拉威尔的国际奥委会和单身人士的问题

我有以下的单身班:

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\uuu构造(ConcreteClass$concrete)
将导致日志创建一个
iz…
,这使得单例在Laravel中的工作非常可疑。我很可能是配置错误。请帮帮我。谢谢。

我不确定您如何使用实例,但它可能是名称空间的问题。当我试图通过指定完整路径来实例化我的单例时,例如:

@inject('foo', 'App\.....\FooSingleton');
它不起作用

我必须只指定名称而不指定路径,即:

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

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

感谢您的回复,我尝试了您建议的名称空间,并且部分成功。显然是在使用App::make('singletonamesperserviceprovider');作品部分工作,因为当使用App::make访问它时,或者在刀片模板中使用@inject时,它工作。但是,当通过另一个类请求它时,它似乎不是作为一个单独的类启动的。但它在大多数情况下都有效。将此标记为答案:)