## 设计模式
> * 单一入口;
> * 根目录只处理静态资源和入口;
> * 目录权限(777只允许存在public和retime目录)
> * **强制遵循MVC或者MVSC模式(不容许脱离此结构)**
> * 模块化时应当尽量独立,切勿太过依赖
> * 切勿过度封装,应当尽量还原本质
> * 应当遵循面向对象思想,切勿搞流水战;
> * 尽可能使用:工厂模式,管道模式,链式,单例模式,
> * 打开必须要有关闭(比如打开文件)
> * 尽可能在定义变量,返回值之前知道返回类型(遵循强类型的思想)
> * 流程应当清晰可见,而不是强制美化,缩简代码;这样只会起反作用
> * 大多数情况下你所写的应当是开放式(不指:private、public、protected)的,而非私有的
> * **非必要情况下尽量不使用 $_GET $_POST 之类的全局用户输入变量,使用时必须进行安全校验**
> * **严禁直接使用include和require引入文件,如有需要请使用composer引入
,或者命名空间**
> * **命名空间遵循自动加载标准,具体请自行百度,保持目录跟命名空间是匹配的**
> * 资源回收机制
## 数据库
> * 数据表的设计大多数时候应该是横向的,而非纵向的;纵向表内容不能超过1000;
> * 数据表的名字应该是清晰可见的,分组明确的,
> * **统一使用 utf8mb4 编码**;
> * **统一使用尽可能的使用 InnoDB 引擎**;
> * 设计结构尽可能遵循函数设计规范,一表一事,而不是不断堆砌字段,
> * join 不能超过 **5** 个表
> * **必须过滤查询字段,不能使用 * 代替,除非这是确定的**
> * **列表查询应当习惯性的加上排序,提高用户体验度**
> * **应该尽可能 放弃 varchar 而使用 char**
> * 减少大内容存储字段
> * **时间必须使用 int(10) 储存**
> * 适当考虑位元算存储方式
> * **减少使用 通配符 、 IN 及 子查询**
> * 开发结束后,必须针对SQL查询语句的条件语句部分(where)添加索引,须匹配多个条件的应该使用聚合索引。
索引的组成应由左至右匹配条件语句的顺序。
> * 严禁盲目添加索引,避免减慢数据插入的速度、增大占用空间及减慢查询速度。
> * 数据库的设计必须符合三个范式(极端要求常用高速时考虑单独设置记录表除外)
> * 能力不足的情况下尽量不要去搞触发器
> * **每个字段及表必须注明作用**;
## 数据库三个范式(具体请自行百度)
> * 当关系模式R的所有属性都不能在分解为更基本的数据单位时,称R是满足第一范式的,简记为1NF。满足第一范式是关系模式规范化的最低要
求,否则,将有很多基本操作在这样的关系模式中实现不了。
> * 如果关系模式R满足第一范式,并且R的所有非主属性都完全依赖于R的每一个候选关键属性,称R满足第二范式,简记为2NF。
> * 设R是一个满足第一范式条件的关系模式,X是R的任意属性集,如果X非传递依赖于R的任意一个候选关键字,称R满足第三范式,简记为3NF.
- 序言
- 基础
- 安装
- 规范
- 目录
- 配置
- 架构
- 入口文件
- 伪静态配置
- Facade
- 使用行为
- 路由
- 路由定义
- 控制器
- 定义控制器
- 数据库
- 连接数据库
- 链式操作
- where
- builder
- field
- limit
- page
- order
- group
- find
- select
- value
- count
- sum
- average
- maximum
- minimum
- column
- update
- insert
- delete
- begin
- rollback
- commit
- left
- right
- inner
- for_update
- shared_lock
- cache
- 构造器
- 查询
- 添加
- 更新
- 删除
- 模型
- 创建模型
- 自动时间戳
- 模型关联
- 模型事件
- 数据转换
- 软删除
- 视图
- 模板
- 日志
- 调试
- 验证
- CLI命令行
- 标准
- 命名规范
- 语法规范
- 注释规范
- 设计模式
- 开发提示
- 数据字典
- Markdown使用文档
- volt模板引擎
- 简介
- 注释
- 变量
- 过滤器
- 流程控制
- 循环语句for
- 条件判断语句if
- 表达式及运算符
- 函数