1. 编码规范

1.1. 表结构规范

建表时如果表内需要定义一下字段, 需要遵照此命名规范:

  • 最后修改时间 modified_time
  • 创建时间 created_time
  • 排序 order_sort
  • 假删除 disabled

1.2. app命名规则及开发规范

1.2.1. 系统级服务APP

定义 系统级服务APP, 系统框架及基础服务. 供给其他各类型APP进行调用(library). 例如: routing/队列服务/RPC等

调用规范

本app(是否有) 系统级服务APP 业务系统APP 基础业务服务APP
lib × ×
model × × ×
controller&view √(后端) × × ×
API ×

1.2.2. 业务系统APP

定义 业务系统APP为前端业务应用. 简单说, 每一个业务系统APP都是可以独立部署的站点. 通过业务系统APP获取数据. 本身不存放任何数据

调用规范

本app(是否有) 系统级服务APP 业务系统APP 基础业务服务APP
lib ×
model × × × ×
controller&view √(前端) × × ×
api ×

1.3. 基础业务服务APP

名词定义:基础业务服务APP 提供服务供给业务系统APP调用. 每一个基础业务服务APP其实都可以包装成一组服务API组件.

调用规范

本app(是否有) 系统级服务APP 业务系统APP 基础业务服务APP
lib × √(尽可能少)
model × × ×
controller&view √(后端) × × ×
API ×

1.4. 异常处理规范

php SPL提供的异常处理类

  • Exception
    • LogicException
      • BadFunctionCallException
      • BadMethodCallException
      • DomainException
      • InvalidArgumentException
      • LengthException
      • RuntimeException
      • OutOfBoundsException
      • OutOfRangeException
      • OverflowException
      • RangeException
      • UnderflowException
      • UnexpectedValueException
      • ErrorException

1.4.1. 抛出错误规范

  • 底层错误抛出RuntimeException或继承RuntimeException的exception
  • 业务或逻辑代码代码需需要抛出LogicException或继承RuntimeException的exception
  • 禁止使用trigger_error抛出错误, 进行处理
  • 尽可能进准抛出SPL提供的具体错误处理类

注意 系统中错误(error_reporting定义之错误)抛出会被base_exception_handler接管, 并抛出ErrorException

1.5. dump方法的使用

开发中尽量避免使用dump获取数据(性能考虑)

(待)save

1.6. 数据库操作

避免直接写sql语句,尽量利用系统的dbeav(避免出错和安全考虑)

1.7. POST、GET请求

禁止不检查过滤POST或者GET就直接插入数据库

过滤掉非ecstore功能的非法尝试字段,不允许将传过来的值直接save方法保存

1.8. model和lib代码

业务逻辑代码避免放在model,做轻model层

代码功能应当单一,避免过多业务逻辑判断,导致代码不能通用和后续升级代码困难

1.9. lib/data下类的方法命名和规范

  • 获取单条记录详细信息方法命名 get*Info($filter);
  • 获取多条记录信息方法命名 get*List($filter);
  • @param $filter array 包含fields:要获取的字段名,start:从什么位置开始,limit:每次取几条记录,order_by:根据什么排序,其他为其他fliter过滤字段
  • 所以此类方法获取信息,要根据传入的$filter组织数据,例如默认fields字段,默认排序字段,过滤非系统字段筛选

1.10. 安全规范

1 所有接口必须定义字段类型 以及 vald的值

比如:['type'=>'int','valid'=>'required']

2 所有控制器在接收参数时必须对参数做验证 比如:

    $validator = validator::make([input::get('tid')],['numeric']);
    if ($validator->fails())
    {
        return $this->splash('error',null,'订单格式错误!');
    }

3 超链传值必须做过滤以及验证

results matching ""

    No results matching ""