Skip to content

须知

开发技术

在二次开发之前,需要了解 php8.xyii2

初次接触yii2框架,可以先学习 yii2.0权威指南

为了更高质量的开发,你可能需要了解 “缓存”,“锁”,“队列”,“分布式”等相关概念。

注意事项

由于yii2的view并不高效,且widgets部件对分布式部署不太友好,DZ-SHOP没有采用。如需在二次开发中使用view和widgets且需要应用于分布式架构,需要启用负载均衡的会话保持。单机架构没有此项要求。

开发工具

建议使用 phpstorm ,也可以使用任何你喜欢的IDE进行开发

部署要求

目录结构

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

广州大舟信息科技 版权所有