From 75d469537d4d3c88b6a75fed4e2ee95ab7cf283e Mon Sep 17 00:00:00 2001 From: Kyle Spraggs Date: Thu, 3 Nov 2011 09:40:08 -0500 Subject: [PATCH] Updated invalid instantiator to give more information if possible. --- src/Di.php | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/Di.php b/src/Di.php index 02f10197..7ec414f6 100644 --- a/src/Di.php +++ b/src/Di.php @@ -167,7 +167,7 @@ public function newInstance($name, array $params = array(), $isShared = true) $instantiator = $definitions->getInstantiator($class); $injectionMethods = $definitions->getMethods($class); - + if ($instantiator === '__construct') { $object = $this->createInstanceViaConstructor($class, $params, $alias); if (array_key_exists('__construct', $injectionMethods)) { @@ -176,7 +176,16 @@ public function newInstance($name, array $params = array(), $isShared = true) } elseif (is_callable($instantiator)) { $object = $this->createInstanceViaCallback($instantiator, $params, $alias); } else { - throw new Exception\RuntimeException('Invalid instantiator'); + if (is_array($instantiator)) { + $msg = sprintf( + 'Invalid instantiator: %s::%s() is not callable.', + isset($instantiator[0]) ? $instantiator[0] : 'NoClassGiven', + isset($instantiator[1]) ? $instantiator[1] : 'NoMethodGiven' + ); + } else { + $msg = 'Invalid instantiator'; + } + throw new \RuntimeException($msg); } if ($isShared) {