可以自定义类名后缀,通过这种方式自动加载文件。
sign/ThinkPHP/Lib/Core/Think.class.php
public static function autoload($class) {
// 检查是否存在别名定义
if(alias_import($class)) return ;
$libPath = defined('BASE_LIB_PATH')?BASE_LIB_PATH:LIB_PATH;
$group = defined('GROUP_NAME') && C('APP_GROUP_MODE')==0 ?GROUP_NAME.'/':'';
$file = $class.'.class.php';
if(substr($class,-8)=='Behavior') { // 加载行为
if(require_array(array(
CORE_PATH.'Behavior/'.$file,
EXTEND_PATH.'Behavior/'.$file,
LIB_PATH.'Behavior/'.$file,
$libPath.'Behavior/'.$file),true)
|| (defined('MODE_NAME') && require_cache(MODE_PATH.ucwords(MODE_NAME).'/Behavior/'.$file))) {
return ;
}
}elseif(substr($class,-5)=='Model'){ // 加载模型
if(require_array(array(
LIB_PATH.'Model/'.$group.$file,
$libPath.'Model/'.$file,
EXTEND_PATH.'Model/'.$file),true)) {
return ;
}
}elseif(substr($class,-6)=='Action'){ // 加载控制器
if(require_array(array(
LIB_PATH.'Action/'.$group.$file,
$libPath.'Action/'.$file,
EXTEND_PATH.'Action/'.$file),true)) {
return ;
}
}elseif(substr($class,0,5)=='Cache'){ // 加载缓存驱动
if(require_array(array(
EXTEND_PATH.'Driver/Cache/'.$file,
CORE_PATH.'Driver/Cache/'.$file),true)){
return ;
}
}elseif(substr($class,0,2)=='Db'){ // 加载数据库驱动
if(require_array(array(
EXTEND_PATH.'Driver/Db/'.$file,
CORE_PATH.'Driver/Db/'.$file),true)){
return ;
}
}elseif(substr($class,0,8)=='Template'){ // 加载模板引擎驱动
if(require_array(array(
EXTEND_PATH.'Driver/Template/'.$file,
CORE_PATH.'Driver/Template/'.$file),true)){
return ;
}
}elseif(substr($class,0,6)=='TagLib'){ // 加载标签库驱动
if(require_array(array(
EXTEND_PATH.'Driver/TagLib/'.$file,
CORE_PATH.'Driver/TagLib/'.$file),true)) {
return ;
}
// 新增类载入
} elseif (substr($class, -4)=='Base'){
if(require_array(array(
LIB_PATH.'你的文件夹/'.$file,
$libPath.'你的文件夹/'.$file), true)) {
return ;
}
}
// 根据自动加载路径设置进行尝试搜索
$paths = explode(',',C('APP_AUTOLOAD_PATH'));
foreach ($paths as $path){
if(import($path.'.'.$class))
// 如果加载类成功则返回
return ;
}
}