1. 命名规范
- 目录和文件:
- 目录使用小写+下划线;
- 类库、函数文件统一以
.php 为后缀;
- 类的文件名均以命名空间定义,并且命名空间的路径和类库文件所在路径一致;
- 类(包含接口和Trait)文件采用驼峰法命名(首字母大写),其它文件采用小写+下划线命名;
- 类名(包括接口和Trait)和文件名保持一致,统一采用驼峰法命名(首字母大写)。
- 函数和类、属性命名:
- 类的命名采用驼峰法(首字母大写),例如
User、 UserType;
- 函数的命名使用小写字母和下划线(小写字母开头)的方式,例如
get_client_ip;
- 方法的命名使用驼峰法(首字母小写),例如
getUserName;
- 属性的命名使用驼峰法(首字母小写),例如
tableName、 instance;
- 特例:以双下划线
__ 打头的函数或方法作为魔术方法,例如 __call 和 __autoload。
- 常量和配置:
- 常量以大写字母和下划线命名,例如
APP_PATH;
- 配置参数以小写字母和下划线命名,例如
url_route_on 和 url_convert;
- 环境变量定义使用大写字母和下划线命名,例如
APP_DEBUG。
- 数据表和字段:
- 数据表和字段采用小写加下划线方式命名,并注意字段名不要以下划线开头,例如
think_user 表和 user_name 字段,不建议使用驼峰和中文作为数据表及字段命名。
2. 开发规范
- 目录结构:
- ThinkPHP6.0 支持多应用和单应用开发,推荐选择多模块开发模式。
- 数据库:
- 必须遵循官方文档的数据表和字段采用小写加下划线方式命名规范;
- 绝不使用命令行或者 PHPMyAdmin 直接创建索引或表,必须使用数据库迁移工具去创建表结构,并提交版本控制器中;
- 绝不为了共享对数据库更改就直接导出 SQL,所有修改都必须使用数据库迁移工具,并提交版本控制器中;
- 绝不直接向数据库手动写入伪造的测试数据,必须使用数据填充来插入假数据,并提交版本控制器中;
- 数据表名必须为「单数」, 多个单词情况下使用「Snake Case」 如:topic, user_log;
- 数据库字段名必须为「Snake Case」,如:
view_count, create_time;
- 数据表主键必须为「id」;
- 数据表外键必须为「resource_id」,如:
user_id , topic_id;
- 绝不允许数据表没有时间戳字段,每个表必须有创建时间(
create_time) 和 更新时间 (update_time),并且这两个字段必须 是整型( int );
- 和自动时间戳字段规范保持一致,其它时间类型必须存储成整型(
int ),并且命名应该以 _time 为后辍;
- 不应该所有数据库字段允许空值,应该为索引、字符串或整数字段指定一个合理的默认值。
- 路由:
- 绝不在路由配置文件里书写『闭包路由』或者其他业务逻辑代码;
- 路由器要保持干净整洁,绝不放置除路由配置以外的其他程序逻辑;
- 必须优先使用 Restful 路由,配合资源控制器使用;
- 应该使用
name 方法为路由指定生成标识,路由标识必须优先使用『资源前缀』作为命名规范,如 topic.index 的资源前缀是 topic.;
- 当路由有标识时,获取 URL 时必须优先使用标识路由获取。
- 助手函数:
- 公共助手函数必须创建在
app/common.php 里;
- 模块独有助手函数必须创建在模块的
common.php 里,如 app/index/common.php;
- 助手函数命名必须遵循 ThinkPHP 官方命名规范, 使用小写字母和下划线(小写字母开头)的方式,例如
get_client_ip。
- 视图模板:
- 视图模板文件必须放在应用的
view 目录里,如:app/index/view;
- 为了保持目录清晰,模板布局应该放在
view/layout 目录里;
- 局部视图模板文件必须使用
_ 前缀来命名,如:app/index/view/topic/_sidebar.html;
- 为了和 Restful 路由器和资源控制器保持一致,视图模板命名也必须使用资源视图的命名方式,如控制器
app\index\controller\Topic 对应的视图模板文件存放目录是 app/index/view/topic;
- 在视图模板文件里应该优先使用内置标签,不应该使用原生 PHP 语法。