|
@@ -36,6 +36,8 @@ class Psr4
|
|
|
*/
|
|
|
protected static $_loadedClass = array();
|
|
|
|
|
|
+ protected static $_loadedClassParams = array();
|
|
|
+
|
|
|
/**
|
|
|
* @var $_realpath 将转换后的路径存放到此变量中
|
|
|
*/
|
|
@@ -448,7 +450,13 @@ class Psr4
|
|
|
$args = func_get_args();
|
|
|
$class = array_shift($args);
|
|
|
$className = $this->getClassName($class);
|
|
|
- if (isset(self::$_loadedClass[$className])) return self::$_loadedClass[$className];
|
|
|
+ //如果实例化的参数发生变化,就重新实例化
|
|
|
+ $paramsHash = md5(var_export($args, true));
|
|
|
+ if (isset(self::$_loadedClass[$className]) && isset(self::$_loadedClassParams[$className])
|
|
|
+ && self::$_loadedClassParams[$className] == $paramsHash) return self::$_loadedClass[$className];
|
|
|
+
|
|
|
+ self::$_loadedClassParams[$className] = $paramsHash;
|
|
|
+
|
|
|
if (!class_exists($className, false)) {
|
|
|
throw new \Qii\Exceptions\CallUndefinedClass(\Qii::i('1105', $className), __LINE__);
|
|
|
}
|