From 35ad3b1995b772d0d708b3910594a600d3e162d2 Mon Sep 17 00:00:00 2001 From: Laurence Date: Sat, 15 Apr 2017 16:44:41 +0000 Subject: [PATCH 1/3] first attempt --- src/Illuminate/Container/Container.php | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Illuminate/Container/Container.php b/src/Illuminate/Container/Container.php index ed8d6eba78a4..677825ebda7f 100755 --- a/src/Illuminate/Container/Container.php +++ b/src/Illuminate/Container/Container.php @@ -586,6 +586,7 @@ protected function resolve($abstract, $parameters = []) // just return an existing instance instead of instantiating new instances // so the developer can keep using the same objects instance every time. if (isset($this->instances[$abstract]) && ! $needsContextualBuild) { + array_pop($this->with); return $this->instances[$abstract]; } From b0f085e3bb012df91a1bcf3ed2945a29bb86765d Mon Sep 17 00:00:00 2001 From: Laurence Date: Sat, 15 Apr 2017 16:49:53 +0000 Subject: [PATCH 2/3] keep StyleCI happy --- src/Illuminate/Container/Container.php | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Illuminate/Container/Container.php b/src/Illuminate/Container/Container.php index 677825ebda7f..a23778c21147 100755 --- a/src/Illuminate/Container/Container.php +++ b/src/Illuminate/Container/Container.php @@ -587,6 +587,7 @@ protected function resolve($abstract, $parameters = []) // so the developer can keep using the same objects instance every time. if (isset($this->instances[$abstract]) && ! $needsContextualBuild) { array_pop($this->with); + return $this->instances[$abstract]; } From 2e9d75036e95f0119a66ce25bf0fa357483b7b8f Mon Sep 17 00:00:00 2001 From: Laurence Date: Sat, 15 Apr 2017 17:00:58 +0000 Subject: [PATCH 3/3] delay retrieving parameters --- src/Illuminate/Container/Container.php | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/Illuminate/Container/Container.php b/src/Illuminate/Container/Container.php index a23778c21147..1b2bad943338 100755 --- a/src/Illuminate/Container/Container.php +++ b/src/Illuminate/Container/Container.php @@ -576,8 +576,6 @@ public function make($abstract) */ protected function resolve($abstract, $parameters = []) { - $this->with[] = $parameters; - $needsContextualBuild = ! empty($parameters) || ! is_null( $this->getContextualConcrete($abstract = $this->getAlias($abstract)) ); @@ -586,11 +584,11 @@ protected function resolve($abstract, $parameters = []) // just return an existing instance instead of instantiating new instances // so the developer can keep using the same objects instance every time. if (isset($this->instances[$abstract]) && ! $needsContextualBuild) { - array_pop($this->with); - return $this->instances[$abstract]; } + $this->with[] = $parameters; + $concrete = $this->getConcrete($abstract); // We're ready to instantiate an instance of the concrete type registered for