# 规范
注意
StartCMS遵循PSR-2命名规范和PSR-4自动加载规范,并且采用标准CMS分层设计,
请理解并尽量遵循以下命名规范,可以减少在开发过程中出现不必要的错误。
# 目录和文件
- 目录使用小写+下划线;
- 类库、函数文件统一以.php为后缀;
- 类名 和文件名保持一致,统一采用驼峰法命名(首字母大写);
- 类文件 采用驼峰法命名(首字母大写);例如 User、UserType;
- 命名空间 和类库文件所在路径一致;
# 方法和属性
- 方法的命名使用驼峰法(首字母小写),例如 getUserName;
- 方法的参数命名使用小写字母+下划线(与数据表字段一致),例如 getUserName($user_id)
- 属性的命名使用驼峰法(首字母小写),例如 tableName、instance;
- 函数的命名使用小写字母和下划线方式(小写字母开头),例如 get_client_ip;
- 特例:以双下划线__打头的函数或方法作为魔术方法,例如 __call 和 __autoload;
# 常量和配置
- 常量以大写字母和下划线命名,例如 APP_PATH;
- 配置参数以小写字母和下划线命名,例如 url_route_on 和url_convert;
- 环境变量定义使用大写字母和下划线命名,例如APP_DEBUG;
# 数据表字段
- 数据表和字段采用小写加下划线方式命名,并注意字段名不要以下划线开头,
- 不建议使用驼峰和中文作为数据表及字段命名。
- 建议主键统一使用id命名,外键统一使用数据表名+_id,例如user表主键为id,在其他表中为user_id
- 建议英文名称统一使用name,中文名称统一使用title(人名除外)
# 模型、服务和控制器
- 模型、服务与控制器文件都遵循文件命名规范
- 服务文件名统一以Service结尾,前缀与模型名保持一致,如User模型与UserService服务
- 控制器名和模型名保持一致,如User控制器与User模型一致(仅调用服务层故无需添加Controller后缀)
关于分层调用
- 模型 主要实现模型关联及数据读写:仅调用模型
- 服务 主要实现业务逻辑及模型操作:仅调用自身关联模型或其他服务,禁止直接调用其他模型,如需读写其他模型请通过调用相应服务方法操作
- 控制器 主要实现权限接口和数据校验:仅调用相关服务,禁止直接调用模型或DAO类以及其他控制器
关于应用调用
- 应用与应用之间优先采用事件通讯
- 应用与应用之间服务的调用通过定义应用门面接口
# 参数、变量和动静态
- 建议接口参数及运行变量统一使用小写字母+下滑线,便于页面-接口-服务-模型-数据链条统一传递
各层接口命名规范
分层 | 文件命名 | 方法命名 | 动静态优先级 | 常用方法命名 |
---|---|---|---|---|
model (模型) | 法则:驼峰命名法(首字母大写) 规则:名词 | 法则:驼峰命名法(首字母小写) 读取:名词 / 形容词 更新:动词 / 动词+名词 | 动态优先 |
page: 分页查询 list: 列表查询 info: 详情查询 create: 创建记录 update: 更新记录 remove: 删除记录(软删除) delete: 删除记录(硬删除) |
service (服务) | 法则:驼峰命名法(首字母大写) 规则:名词 + Service | 法则:驼峰命名法(首字母小写) 规则:动词 / 动词+名词 | 静态优先 |
getPage: 分页查询 getList: 列表查询 getInfo: 详情查询 create: 创建记录 update: 更新记录 remove: 删除记录(软删除) delete: 删除记录(硬删除) updateList: 更新列表 updateStatus: 更新状态 |
controller (控制器) | 法则:驼峰命名法(首字母大写) 规则:名词 |
法则:驼峰命名法(首字母小写) 读取:名词 / 形容词 更新:动词 / 动词 + 名词 | 动态优先 |
page: 分页查询 list: 列表查询 info: 详情查询 create: 创建记录 update: 更新记录 remove: 删除记录 updateList: 更新列表 updateStatus: 更新状态 |