里面的autoload类库自动加载方法
贴一部分代码, 看里面 $namespace = C('AUTOLOAD_NAMESPACE');
public static function autoload($class) {
// 检查是否存在映射
if(isset(self::$_map[$class])) {
include self::$_map[$class];
}elseif(false !== strpos($class,'\\')){
$name = strstr($class, '\\', true);
if(in_array($name,array('Think','Org','Behavior','Com','Vendor')) || is_dir(LIB_PATH.$name)){
// Library目录下面的命名空间自动定位
$path = LIB_PATH;
}else{
// 检测自定义命名空间 否则就以模块为命名空间
$namespace = C('AUTOLOAD_NAMESPACE');
$path = isset($namespace[$name])? dirname($namespace[$name]).'/' : APP_PATH;
}
$filename = $path . str_replace('\\', '/', $class) . EXT;
if(is_file($filename)) {
// Win环境下面严格区分大小写
if (IS_WIN && false === strpos(str_replace('/', '\\', realpath($filename)), $class . EXT)){
return ;
}
include $filename;
}
这个C方法为什么可以在这个else里面调用,在上面的if里面调用,或者在方面最顶部调用,都报Fatal error: Call to undefined function Think\C(),但是else里面的$namespace = C('AUTOLOAD_NAMESPACE'); 这里调用C方法为什么可以调用呢,当前命名空间是Think 最佳答案
