Appearance
须知
开发技术
初次接触yii2框架,可以先学习 yii2.0权威指南。
为了更高质量的开发,你可能需要了解 “缓存”,“锁”,“队列”,“分布式”等相关概念。
注意事项
由于yii2的view并不高效,且widgets部件对分布式部署不太友好,DZ-SHOP没有采用。如需在二次开发中使用view和widgets且需要应用于分布式架构,需要启用负载均衡的会话保持。单机架构没有此项要求。
开发工具
建议使用 phpstorm ,也可以使用任何你喜欢的IDE进行开发
部署要求
- php 8.1.x或以上
- mysql 5.7或以上 或 mariadb 10.3或以上 或 兼容以上版本的数据库
目录结构
txt
┌── backendApi 后台API接口
│ ├── behaviors 行为管理
│ ├── controllers 默认控制器
│ ├── forms 数据验证
│ └── modules 后台核心模块
├── centerApi SAAS中心API接口(仅支持SAAS版本)
│ ├── behaviors 行为管理
│ ├── controllers 默认控制器
│ ├── forms 数据验证
│ └── modules 后台核心模块
├── certificate 证书保存目录
├── common 公共应用目录
│ ├── behaviors 公共行为管理
│ ├── components 公共组件
│ ├── enums 公共枚举
│ ├── forms 公共数据验证
│ ├── gii 自定义gii生成
│ ├── helpers 公共帮助类
│ ├── messages i18n多语言配置
│ ├── models 公共模型
│ ├── queues 队列方法
│ ├── rest 路由规则
│ └── traits trait
├── config 配置
│ ├── backendApi 后台API配置
│ ├── centerApi SAAS中心API配置(仅支持SAAS版本)
│ ├── common 公共配置
│ ├── console 控制台配置
│ ├── frontend 前端配置
│ └── frontendApi 前端API配置
├── console 控制台
│ ├── config 定时任务配置
│ └── controllers 定时任务控制器
├── frontend 前端
│ └── controllers 前端控制器
├── frontendApi 前端API接口
│ ├── controllers 默认控制器
│ ├── forms 数据验证
│ └── modules 前端核心模块
├── install 安装授权
├── plugins 插件目录
├── runtime 运行时
├── services 服务逻辑
├── vendor 三方组件
└── web 站点入口
开发规范
数据库规范
表命名规范
- 数据表名小写,多关键字使用下划线分割(关键字尽量全称)
- 字段名小写,多关键字使用下划线分割(关键字尽量全称)
- 禁止使用保留字并且尽量少用含有关键词来命名
基础规范
- 所有的字段必须添加注释
- 尽可能地使用InnoDB作为表的存储引擎
- 数据库和数据表统一使用
utf8mb4
字符编码 - 所有的表和字段必须添加注释
- 尽量控制表行数在500万以内
- 尽可能采用冷热数据分离策略
- 禁止以图片、文件等二进制数据
表设计规范
- 尽可能每张表的索引数量控制在5个以内
- 每一张InnoDB表都必须含有一个主键
- 尽可能避免使用外键约束
- 设置数据表架构应考虑后期扩展
- 遵循范式与冗余平衡原则
字段设计规范
- 尽可能将所有的数据列定义为
NOT NULL
类型 - 避免 ENUM 数据类型
- json 存储的数据用
json
字段代替text
- 表与表关联的键名保持一致或以关联表名的缩写为前缀
- 固定长度的字符串字段务必使用
char
- 使用
UNSIGNEG
存储非负整数 - 禁止敏感数据以明文形式存储
- 金额相关的数据使用
DECIMAL
或使用BIGINT
数据类型 - 尽量所有表有
status
字段来标注数据状态(-1:已删除,0:禁用,1:正常) - 在无必要的情况下尽量使用软删除,所有的删除数据标记
status
为 -1 - 创建时间字段为
created_time
,修改时间字段为updated_time
,类型int(10) - 用户关联 id 为
member_id
- 排序字段为
sort
类规范
model(模型)
- 数据库字段管理
- 数据库关联管理
- 数据库触发行为
- 数据库入库验证
form(模型-数据验证)
- 对提交的复杂数据进行验证处理
ontroller(控制器)
- 数据接收
- 数据处理
- 服务调用
- 结果返回
service(逻辑服务)
- 数据处理
- 逻辑处理
注意事项
DZ-SHOP内置了一个hookService的逻辑服务,可用于在特定节点进行逻辑处理而不用更改原代码
API文档规范
- 所有API Controller必须使用 Attributes 对controller方法进行描述
注意事项
DZ-SHOP内置自研的APIDOC模型,在开发服务端的同时,可自动生成可查看、查询、调试于一体的前端API文档,是前后端联合开发的利器。了解APIDOC Attributes语法 ->