From 35967e7ffecd3b43ea803203a514ac76918c106b Mon Sep 17 00:00:00 2001 From: Ralph Schindler Date: Mon, 10 Oct 2011 11:56:05 -0500 Subject: [PATCH] Zend\Di - Allow new dimension to the type information in definition false means carte-blanche values (no class lookup) - Fixed newInstance() to early register instance so that setter injection will not cause circular dependencies --- src/Di.php | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/src/Di.php b/src/Di.php index 909dcf99..53259c0b 100644 --- a/src/Di.php +++ b/src/Di.php @@ -181,6 +181,14 @@ public function newInstance($name, array $params = array(), $isShared = true) throw new Exception\RuntimeException('Invalid instantiator'); } + if ($isShared) { + if ($params) { + $this->instanceManager->addSharedInstanceWithParameters($object, $name, $params); + } else { + $this->instanceManager->addSharedInstance($object, $name); + } + } + if ($injectionMethods) { foreach ($injectionMethods as $injectionMethod => $methodIsRequired) { $this->handleInjectionMethodForObject($object, $injectionMethod, $params, $alias, $methodIsRequired); @@ -216,13 +224,7 @@ public function newInstance($name, array $params = array(), $isShared = true) } } - if ($isShared) { - if ($params) { - $this->instanceManager->addSharedInstanceWithParameters($object, $name, $params); - } else { - $this->instanceManager->addSharedInstance($object, $name); - } - } + array_pop($this->instanceContext); return $object; @@ -434,6 +436,9 @@ protected function resolveMethodParameters($class, $method, array $callTimeUserP if (isset($iConfig[$thisIndex]['parameters'][$fqName])) throw \Exception('Implementation incomplete for fq names'); if (is_string($iConfig[$thisIndex]['parameters'][$name]) + && $type === false) { + $computedParams['value'][$fqName] = $iConfig[$thisIndex]['parameters'][$name]; + } elseif (is_string($iConfig[$thisIndex]['parameters'][$name]) && isset($aliases[$iConfig[$thisIndex]['parameters'][$name]])) { $computedParams['required'][$fqName] = array( $iConfig[$thisIndex]['parameters'][$name],