Phpcms通过规范目录结构和命名规则,结合pc_base::load_app_class()等加载函数实现类自动加载,无需Composer配置。1. 类文件需按模块、模型、库的路径与命名规范存放;2. 使用pc_base提供的加载方法引入类,框架依据路径自动包含文件;3. 自定义类应置于/libs/classes/并用load_sys_class调用;4. 注意文件路径、大小写匹配及缓存清理问题。该机制依赖约定路径与封装的include逻辑,非spl_autoload_register实现。

Phpcms 的自动加载机制主要依赖于框架自带的 类自动加载 功能,不需要像 Composer 那样手动配置 autoload 文件。Phpcms(特别是 Phpcms V9)使用的是自定义的类加载方式,通过统一入口和命名规范实现自动加载。
1. 确保目录结构和命名规范正确
Phpcms 自动加载依赖于固定的目录结构和文件命名规则:
-
• 控制器类文件放在 /phpcms/modules/模块名/ 目录下,文件名为 模块名.php,类名也必须是 模块名
• 模型类文件放在 /phpcms/model/ 目录下,文件名为 表名_model.class.php,类名格式为 表名_model
• 库类(libraries)放在 /phpcms/libs/classes/,文件名为 类名.class.php,类名与文件名一致
例如:创建一个 Sms 类,应放在 /phpcms/libs/classes/sms.class.php,类定义为:
class sms { ... }
立即学习“PHP免费学习笔记(深入)”;
2. 使用 pc_base::load_app_class() 加载应用类
在模块中调用其他类时,使用框架提供的加载方法:
技术上面应用了三层结构,AJAX框架,URL重写等基础的开发。并用了动软的代码生成器及数据访问类,加进了一些自己用到的小功能,算是整理了一些自己的操作类。系统设计上面说不出用什么模式,大体设计是后台分两级分类,设置好一级之后,再设置二级并选择栏目类型,如内容,列表,上传文件,新窗口等。这样就可以生成无限多个二级分类,也就是网站栏目。对于扩展性来说,如果有新的需求可以直接加一个栏目类型并新加功能操作
-
• pc_base::load_app_class('类名', '模块名') —— 加载某个模块下的类
• pc_base::load_sys_class('类名') —— 加载系统核心类(如 db、form 等)
• pc_base::load_model('模型名') —— 加载 model 目录下的模型类
示例:
$this->sms = pc_base::load_app_class('sms', 'member');
这会自动加载 /phpcms/modules/member/classes/sms.class.php
3. 自定义类的自动加载(扩展使用)
如果想添加自己的类并实现“自动加载”,可以:
-
• 将类放入 /phpcms/libs/classes/ 并遵循命名规范
• 使用 pc_base::load_sys_class('yourclass') 调用,框架会自动查找并包含
• 或者在初始化时通过 require/include 手动引入(不推荐)
注意:Phpcms 没有使用 PHP 的 spl_autoload_register() 实现全自动加载,而是通过函数封装 include 逻辑,所以“自动”是基于约定路径 + 加载函数配合实现的。
4. 常见问题处理
-
• 类找不到?检查文件路径、命名是否匹配
• 类名大小写敏感?Linux 服务器注意大小写一致性
• 修改类后无生效?清空缓存(/caches/ 目录)
基本上就这些。Phpcms 的类加载靠的是“规范 + 加载函数”,只要按规则放文件,用正确的函数调用,就能正常使用自动加载功能。










