From 35badf8a0ac8cd7af889ec072d93e366fa5226ce Mon Sep 17 00:00:00 2001 From: Tomoaki Kosugi Date: Fri, 14 Mar 2014 08:16:50 +0900 Subject: [PATCH 1/3] Fix zendframework/zf2#5959 update DiAbstractFactory canCreateServiceWithName check instantiable strictly --- src/Di/DiAbstractServiceFactory.php | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/Di/DiAbstractServiceFactory.php b/src/Di/DiAbstractServiceFactory.php index 83967d6a..93d896dc 100644 --- a/src/Di/DiAbstractServiceFactory.php +++ b/src/Di/DiAbstractServiceFactory.php @@ -10,6 +10,7 @@ namespace Zend\ServiceManager\Di; use Zend\Di\Di; +use Zend\Di\Exception\RuntimeException as DiException; use Zend\ServiceManager\AbstractFactoryInterface; use Zend\ServiceManager\ServiceLocatorInterface; @@ -51,10 +52,25 @@ public function createServiceWithName(ServiceLocatorInterface $serviceLocator, $ */ public function canCreateServiceWithName(ServiceLocatorInterface $serviceLocator, $name, $requestedName) { - return $this->instanceManager->hasSharedInstance($requestedName) + if ($this->instanceManager->hasSharedInstance($requestedName) || $this->instanceManager->hasAlias($requestedName) || $this->instanceManager->hasConfig($requestedName) || $this->instanceManager->hasTypePreferences($requestedName) - || $this->definitions->hasClass($requestedName); + ) { + return true; + } + + if (! $this->definitions->hasClass($requestedName)) { + return false; + } + + try { + $this->serviceLocator = $serviceLocator; + $this->get($requestedName); + } catch (DiException $e) { + return false; + } + + return true; } } From 009685d36fb01f869b23fd4766e5924d95a2ceed Mon Sep 17 00:00:00 2001 From: Tomoaki Kosugi Date: Wed, 26 Mar 2014 10:13:07 +0900 Subject: [PATCH 2/3] tmp: Revert "Fix zendframework/zf2#5959 update DiAbstractFactory canCreateServiceWithName" This reverts commit 7c7d684003e1f63b453103f7947ef12492750d52. --- src/Di/DiAbstractServiceFactory.php | 20 ++------------------ 1 file changed, 2 insertions(+), 18 deletions(-) diff --git a/src/Di/DiAbstractServiceFactory.php b/src/Di/DiAbstractServiceFactory.php index 93d896dc..83967d6a 100644 --- a/src/Di/DiAbstractServiceFactory.php +++ b/src/Di/DiAbstractServiceFactory.php @@ -10,7 +10,6 @@ namespace Zend\ServiceManager\Di; use Zend\Di\Di; -use Zend\Di\Exception\RuntimeException as DiException; use Zend\ServiceManager\AbstractFactoryInterface; use Zend\ServiceManager\ServiceLocatorInterface; @@ -52,25 +51,10 @@ public function createServiceWithName(ServiceLocatorInterface $serviceLocator, $ */ public function canCreateServiceWithName(ServiceLocatorInterface $serviceLocator, $name, $requestedName) { - if ($this->instanceManager->hasSharedInstance($requestedName) + return $this->instanceManager->hasSharedInstance($requestedName) || $this->instanceManager->hasAlias($requestedName) || $this->instanceManager->hasConfig($requestedName) || $this->instanceManager->hasTypePreferences($requestedName) - ) { - return true; - } - - if (! $this->definitions->hasClass($requestedName)) { - return false; - } - - try { - $this->serviceLocator = $serviceLocator; - $this->get($requestedName); - } catch (DiException $e) { - return false; - } - - return true; + || $this->definitions->hasClass($requestedName); } } From d56de0e7589f1800d4352926ab3cbea88bcd4d6f Mon Sep 17 00:00:00 2001 From: Tomoaki Kosugi Date: Wed, 26 Mar 2014 10:18:57 +0900 Subject: [PATCH 3/3] Fix zendframework/zf2#5959 update DiAbstractFactory canCreateServiceWithName --- src/Di/DiAbstractServiceFactory.php | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/Di/DiAbstractServiceFactory.php b/src/Di/DiAbstractServiceFactory.php index 83967d6a..9f030e18 100644 --- a/src/Di/DiAbstractServiceFactory.php +++ b/src/Di/DiAbstractServiceFactory.php @@ -51,10 +51,18 @@ public function createServiceWithName(ServiceLocatorInterface $serviceLocator, $ */ public function canCreateServiceWithName(ServiceLocatorInterface $serviceLocator, $name, $requestedName) { - return $this->instanceManager->hasSharedInstance($requestedName) + if ($this->instanceManager->hasSharedInstance($requestedName) || $this->instanceManager->hasAlias($requestedName) || $this->instanceManager->hasConfig($requestedName) || $this->instanceManager->hasTypePreferences($requestedName) - || $this->definitions->hasClass($requestedName); + ) { + return true; + } + + if (! $this->definitions->hasClass($requestedName) || interface_exists($requestedName)) { + return false; + } + + return true; } }