很多框架都有动态加载文件这个功能,这样就不用在开头处把框架中的文件一次全部 include 进来,可以按需加载。
joomla中提供了这个功能的文件是
libraries/loader.php
文件中开头的这句
spl_autoload_register(array('JLoader', 'load'));
spl_autoload_register 是php5.1.2版本以上才提供的功能,类似 __autoload() 函数,但[/size]__autoload()只能提供一个参数,spl_autoload_register 的参数可以是多个(数组),上面那句的意思就是当文件中不存在一个类时,会尝试去执行 Joader 类的 load() 方法,这个就是动态加载的诀窍了,下面贴下 load () 的内容
public static function load($class)
{
// Sanitize class name.
$class = strtolower($class);
// If the class already exists do nothing.
if (class_exists($class)) {
return;
}
// If the class is registered include the file.
if (isset(self::$_classes[$class])) {
include_once self::$_classes[$class] ;
return true;
}
return false;
}
load 的参数 $class 就是我们尝试包含的类名。