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时,它工作。但是,当通过另一个类请求它时,它似乎不是作为一个单独的类启动的。但它在大多数情况下都有效。将此标记为答案:)