CanPHP开发手册--类自动加载机制
说明:
- 当使用或继承的所需的类不存在的时候,会自动加载,从而不需要使用include或require包含文件。
- :注意:仅从模块目录,canphp核心core目录,lib扩展库目录,ext第三方扩展库目录,model模型目录去搜索,且只有命名规则符合"类名.class.php"这种形式,才会被自动加载
原理:
在cpApp.class.php中构造函数中,注册了一个自动加载类的方法 if(function_exists('spl_autoload_register')) { spl_autoload_register('self::autoload'); //注册类的自动加载 } //实现类的自动加载 static public function autoload($classname) { $class_array=array(); $base_path=cpApp_PATH; $class_array[]=self::$config['MODULE_PATH'].$classname.'.class.php';//加载模块文件 $class_array[]=$base_path.'/'.$classname.'.class.php';//核心文件 $class_array[]=$base_path.'/../lib/'.$classname.'.class.php';//官方扩展库 $class_array[]=$base_path.'/../ext/'.$classname.'.class.php';//第三方扩展库 $class_array[]=self::$config['MODEL_PATH'].$classname.'.class.php';//加载模型文件 foreach($class_array as $file) { if(is_file($file)) { require_once($file); return true; } } return false; }