一、API php 接口开发

  • 每个Controller需要继承BaseController
  • BaseController里面包含了可使用的工具函数等

传入参数获取

  • 使用$_REQUEST($user_id)获取user_id参数值

传入参数判断

  • 是否为空: check_param_empty()
  • 检测API传入参数是否为空,传入有三种情况:(用empty()函数进行判断)
  1. 空【直接返回错误】
  2. 字符串【用逗号分割字符串,然后逐个判断】
  3. 数组【对数组的key进行判断是否为空(key为传入参数的名字,当然也可以直接判断数组每个key对应的value是否为空,但是对key进行获取$_REQUEST($key)的话会更有保证一些)】
    -是否为set: check_param_isset(),检测API传入参数是否为集合:(用isset()函数进行判断)
  4. 情况同“是否为空”

增删改查

  • where语句
  1. 统一使用数组形式,即:$where=array();然后添加每个条件;
  2. 注意:如果sql语句中有alias设置别称,在\(where中一定也要加上,eg: ``\)where[‘u.id’] = “1”``;
  • M函数
    1.实例化一个没有模型文件的Model
    2.项目中已经将DB_PREFIX参数设置为vc_,因此表名不需要加前缀,即:M('xm_farm_user_vegetable_link')
  • alias: 可根据需要增加别名
  • join: 连接其他表的话用join,一般都是使用left join,eg:
join('left join vc_xm_farm_vegetable v on l.vegetable_id =  v.id')
  • field: 查找时一定要设定需要返回那些字段,一次返回所有字段是个坏的选择,同时要注意有alias的情况
  • getField: getField一般用于查询一个字段的一条记录的情况;如果设置多个字段,返回的数组的下标会根据表的id设置,不会是数组默认下标0,1,2,…

分页

  • 分页使用\Think\Page的构造函数完成
  • 注意:使用分页时,也需要将查询语句设定limit,即:
limit($Page->firstRow.','.$Page->listRows)``

步骤:

  • 先获取总记录数,之后如果有left join没有关系,因为是根据左表来设置的,如果会有right join或者其他会改变总记录数的情况就需要视情况而定;
  • 创建Page对象:
$Page = new \Think\Page($count,$_REQUEST['pagenum']);  // 实例化分页类 传入总记录数 【tp框架的分页参数默认为20】
  • 分页数据查询
  • 小程序可能会主动去获取分页结果显示【这个不清楚!!!】

返回值

构造合适的返回格式

  • 最简单:直接将查出来的一个list返回,也就是一个一维数组:{[0]=>Array{} [1]=>Array{} …},每个元素的内容为一个数组;
  • 需要将每个list和同级返回其他字段,则使用foreach($list as $key=>$item){} 然后通过设定$result[$key][‘ziduan’] = $value; $result[$key][‘list’] = $item进行数组构建;
  • 其他的就是数组内部需要加入一些其他内容的情况,视情况而定即可。

其他

  • 返回值规范化: return_format()
  • 展示trace信息、返回内容、返回内容json格式等
  • 开发时根据小程序的效果图以及小程序开发人员的沟通确定传入参数和返回数据内容以及数据格式
  • 开发完毕后需要添加或修改API Doc
  • 将返回的json在线规范格式copy进来即可

二、后台管理 php web开发

  • 每个Controller直接继承Controller即可

开发步骤:

  • 进入后台管理系统=>开发人员选项=>后台菜单列表=>添加菜单:设置上级、名称、url
  • 商户管理员=>角色设置=>编辑对应角色=>勾选对应功能
  • 代码=>Admin=>View里找到相似的功能页面复制
  • 创建新的Controller和View下的新文件夹,如果功能在某个Controller下面就不需要了
  • 新的Controller和View的html文件根据之前相似的功能进行复制更改
  • 然后登陆后台进行测试
  • 首先需要初始化工作:protected function _initialize() 设定web的header以及这个Controller所使用到的table_name,之后直接使用$this->table_name即可开始查询
  • 一般index()作为展示页面的操作,不过别的也可以
  • 获取session中的数据:一般用于获取store_id,如果需要store_id的话就获取,eg:$where['store_id']=$_SESSION['admin']['admin_store_id'];//获取session中的store_id
  • 分页
  1. 获取总记录数
  2. 创建Page对象
  3. 组装分页连接:$show = $Page->show();// 分页显示输出
  4. 分页数据查询
  5. 模板变量赋值:将分页数据list、传入的参数、分页page都赋值:
  6. $this->assign("lists", $lists);
  7. $this->assign("pages",$show);
  8. $this->assign("param",$_REQUEST);
  9. 模板显示:$this->display();
  • 获取页面数据
    GET、REQUEST、POST【todo】

三、thinkPHP框架和PHP语言的一些tips

  • ?: 三元运算符

第一个返回值可以为空,即:return (a>=0)?:“no”; 如果a<0,则返回1,否则返回”no”

  • 日期

date('Y-m-d H:i:s’,$string);

【如果不传参数$string,则返回指定格式的当前时间】
格式化的时候注意Y-m-d H:i:s 的大小写,写法不一样,格式也不一样