您好,欢迎访问一九零五行业门户网

关于yii 的baseyii.php的autoload步骤

关于yii 的baseyii.php的autoload方法
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.
其它类似信息

推荐信息