public static function autoload($classname) { if (isset(static::$classmap[$classname])) { $classfile = static::$classmap[$classname]; if ($classfile[0] === '@') { $classfile = static::getalias($classfile); } } elseif (strpos($classname, '\\') !== false) { $classfile = static::getalias('@' . str_replace('\\', '/', $classname) . '.php', false); if ($classfile === false || !is_file($classfile)) { return; } } else { return; } include($classfile); //源码 include($classfile); if (yii_debug && !class_exists($classname, false) && !interface_exists($classname, false) && !trait_exists($classname, false)) { throw new unknownclassexception(unable to find '$classname' in file: $classfile. namespace missing?); } }
$classfile =static::$classmap[$classname]有在yii.php加载了映射表为什么后面用include而不用include_once
// yii.php代码下面的语句读取了一个映射表
yii::$classmap = include(__dir__ . '/classes.php');
回复讨论(解决方案) 因为前面的代码已经判断了是否已经include。所以这里不需要once.
谢谢