关于yii 的baseyii.php的autoload方法
1 | <br /> public static function autoload( $className )<br /> {<br /> if (isset( static :: $classMap [ $className ])) {<br /> $classFile = static :: $classMap [ $className ];<br /> if ( $classFile [0] === '@' ) {<br /> $classFile = static ::getAlias( $classFile );<br /> }<br /> } elseif ( strpos ( $className , '\\' ) !== false) {<br /> $classFile = static ::getAlias( '@' . str_replace ( '\\' , '/' , $className ) . '.php' , false);<br /> if ( $classFile === false || ! is_file ( $classFile )) {<br /> return ;<br /> }<br /> } else {<br /> return ;<br /> }<br /><br /> include ( $classFile );
|
登入後複製
$classFile =static::$classMap[$className]有在yii.php加载了映射表为什么后面用include而不用include_once
// yii.php代码下面的语句读取了一个映射表
Yii::$classMap = include(__DIR__ . '/classes.php');
------解决思路----------------------因为前面的代码已经判断了是否已经include。所以这里不需要once.