Thinkphp新增自动加载文件
可以自定义类名后缀,通过这种方式自动加载文件。
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 ; } }
分类:
PHP
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
【推荐】AI 的力量,开发者的翅膀:欢迎使用 AI 原生开发工具 TRAE
【推荐】2025 HarmonyOS 鸿蒙创新赛正式启动,百万大奖等你挑战
· 记一次 C# 平台调用中因非托管 union 类型导致的内存访问越界
· [EF Core]聊聊“复合”属性
· 那些被推迟的 C# 14 特性及其背后的故事
· 我最喜欢的 C# 14 新特性
· 程序员究竟要不要写文章
· 我是不是很有钱?
· 遭遇疯狂 cc 攻击的一个周末
· 【EF Core】聊聊“复合”属性
· GPT‑5 重磅发布
· 美丽而脆弱的天体运动:当C#遇见宇宙混沌