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 语法。