diff --git a/library/think/App.php b/library/think/App.php index 59df8ba8..bc741548 100644 --- a/library/think/App.php +++ b/library/think/App.php @@ -251,7 +251,11 @@ class App $class = $param->getClass(); if ($class) { $className = $class->getName(); - $args[] = method_exists($className, 'instance') ? $className::instance() : new $className(); + if (isset($vars[$name]) && $vars[$name] instanceof $className) { + $args[] = $vars[$name]; + } else { + $args[] = method_exists($className, 'instance') ? $className::instance() : new $className(); + } } elseif (1 == $type && !empty($vars)) { $args[] = array_shift($vars); } elseif (0 == $type && isset($vars[$name])) {