diff --git a/src/Illuminate/Foundation/Application.php b/src/Illuminate/Foundation/Application.php index 54b9286ce4d6..897fe9adf3d5 100755 --- a/src/Illuminate/Foundation/Application.php +++ b/src/Illuminate/Foundation/Application.php @@ -696,6 +696,8 @@ public function register($provider, $force = false) if (property_exists($provider, 'singletons')) { foreach ($provider->singletons as $key => $value) { + $key = is_int($key) ? $value : $key; + $this->singleton($key, $value); } } diff --git a/tests/Foundation/FoundationApplicationTest.php b/tests/Foundation/FoundationApplicationTest.php index 63abffc4e3ef..d96cf62311eb 100755 --- a/tests/Foundation/FoundationApplicationTest.php +++ b/tests/Foundation/FoundationApplicationTest.php @@ -67,6 +67,7 @@ public function testSingletonsAreCreatedWhenServiceProviderIsRegistered() $app->register($provider = new class($app) extends ServiceProvider { public $singletons = [ + NonContractBackedClass::class, AbstractClass::class => ConcreteClass::class, ]; }); @@ -77,6 +78,11 @@ public function testSingletonsAreCreatedWhenServiceProviderIsRegistered() $this->assertInstanceOf(ConcreteClass::class, $instance); $this->assertSame($instance, $app->make(AbstractClass::class)); + + $instance = $app->make(NonContractBackedClass::class); + + $this->assertInstanceOf(NonContractBackedClass::class, $instance); + $this->assertSame($instance, $app->make(NonContractBackedClass::class)); } public function testServiceProvidersAreCorrectlyRegisteredWhenRegisterMethodIsNotFilled() @@ -613,6 +619,11 @@ class ConcreteClass extends AbstractClass // } +class NonContractBackedClass +{ + // +} + class ConcreteTerminator { public static $counter = 0;