ThinkPHP6.0命名规范是硬性规则:类名与文件名须严格匹配PascalCase(如app/model/User.php对应app\model\User),函数/配置/字段用snake_case,控制器方法用camelCase但路由转小写匹配,目录/环境变量全小写或全大写,违反将导致自动加载失败、路由错误等报错。

ThinkPHP6.0 的命名规范不是“可选建议”,而是直接影响自动加载、路由解析、模型映射和配置读取的硬性规则。不遵守会导致 Class 'think\Controller' not found、model\User 找不到对应表、config/database.php 不生效等实际报错。
类名与文件名必须严格匹配驼峰式(PascalCase)
TP6 依赖 PSR-4 自动加载,类文件路径和命名空间必须完全一致。比如 app\model\User 类,对应文件必须是 app/model/User.php(注意:目录小写,文件名首字母大写),且类定义为:
namespace app\model;
use think\Model;
class User extends Model
{
}
常见错误包括:
- 把文件命名为
user.php或user_model.php—— 自动加载失败 - 类名写成
user或UserModel但没同步改命名空间 —— 类找不到 - 在多应用模式下,把模型放在
app/index/model/却用app\model\User命名空间引用 —— 路径错位
函数名、配置项、数据库字段统一用小写下划线(snake_case)
这和类/方法命名形成明确区分,避免混淆。TP6 内部大量使用该风格,比如:
立即学习“PHP免费学习笔记(深入)”;
- 助手函数:
get_client_ip()、array_merge_recursive() - 配置键名:
url_route_on、database.hostname、log.level - 数据表与字段:
think_user表、user_name字段 —— 不允许userName或user-name
特别注意:配置项名严格区分大小写,APP_DEBUG 是环境变量,app_debug 才是配置参数;写反了会导致调试开关失效。
控制器方法名用小驼峰(camelCase),但路由访问不区分大小写
方法定义推荐 index()、getUserList()、updateUserInfo() 这类小驼峰写法,符合 PSR-2 和可读性要求。但 PHP 7+ 下,$this->getUserList() 和 $this->getuserlist() 都能调用成功 —— 这只是语言层行为,不代表可以滥用。
真正关键的是路由映射逻辑:
- URL
/index/getUserList会被自动转为小写再匹配方法名(即找getuserlist) - 如果你定义了
get_user_list()(下划线),路由默认不会识别,除非手动配置路由规则 - 模型里的查询方法如
scopeHot()、searchByName()也应保持小驼峰,否则作用域或动态方法调用会失败
目录、文件、环境变量全部小写,中间件/插件名需显式注册
TP6 对目录结构有强约定:
- 应用目录固定为
app,子应用如admin、api必须全小写 - 配置目录是
config(不是Config或CONFIG),自定义配置文件如wechat.php必须小写 - 环境变量如
APP_ENV、DB_HOST全大写加下划线,但它们只用于.env,不直接出现在代码中 - 中间件类名如
CheckAuth必须放在app/middleware/下,且需在middleware.php中显式绑定,不能仅靠命名自动启用
最容易被忽略的一点:app 目录下的 common.php 是全局函数文件,它不参与自动加载,所有函数必须用小写下划线命名,并确保在需要前已被引入 —— 否则 my_helper_function() 会报未定义函数。



















