From afdf5f7b478f7783d0b7aaafb6a7ad98a39b4c0b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mr=C2=B7x?= Date: Sun, 25 Apr 2021 12:05:34 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=B9=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- System/Di/Container.php | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/System/Di/Container.php b/System/Di/Container.php index 6f09dbea..fecf6d97 100644 --- a/System/Di/Container.php +++ b/System/Di/Container.php @@ -143,20 +143,36 @@ class Container extends BaseObject throw new NotFindClassException($reflect->getName()); } + unset($dependencies['class']); + if (empty($config) || !is_array($config)) { - $object = $reflect->newInstanceArgs($dependencies); + $object = $this->newInstance($reflect, $dependencies); } else if (!empty($dependencies) && $reflect->implementsInterface('Snowflake\Abstracts\Configure')) { $dependencies[count($dependencies) - 1] = $config; - $object = $reflect->newInstanceArgs($dependencies); + $object = $this->newInstance($reflect, $dependencies); } else { if (!empty($config)) $this->_param[$class] = $config; - $object = $this->onAfterInit($reflect->newInstanceArgs($dependencies), $config); + $object = $this->onAfterInit($this->newInstance($reflect, $dependencies), $config); } return $this->propertyInject($reflect, $object); } + /** + * @param $reflect + * @param $dependencies + * @return mixed + */ + private function newInstance($reflect, $dependencies) + { + if (!empty($dependencies)) { + return $reflect->newInstanceArgs($dependencies); + } + return $reflect->newInstance(); + } + + /** * @param ReflectionClass $reflect * @param $object