thinkPHP5框架接口写法简单示例


Posted in PHP onAugust 05, 2019

本文实例讲述了thinkPHP5框架接口写法。分享给大家供大家参考,具体如下:

控制器

/**
* 添加收货地址
*/
public function addAddress(){
    $post = $this->request->post();
    //验证 唯一规则: 表名,字段名,排除主键值,主键名
    $validate = new \think\Validate([
      ['uid', 'require', '用户id不能为空'],
      ['name', 'require|max:20', '收件人不能为空'],
      ['mobile', 'require|length:11', '手机号码不能为空'],
      ['province_id', 'require', '省份不能为空'],
      ['city_id', 'require', '城市不能为空'],
      ['district_id', 'require', '县区不能为空'],
      ['detail', 'require|max:100', '地址详情不能为空'],
    ],[
      'mobile.length' => '手机号码格式不正确',
      'name.max' => '收件人不能超过20个字符',
      'detail.max' => '地址详情不能超过100个字符',
    ]);
    //验证部分数据合法性
    if (!$validate->check($post)) {
      \Org\Response::show(400,'提交失败:' . $validate->getError());
    }
    $user_id = $post['uid'];
    $name = $post['name'];
    $mobile = $post['mobile'];
    $province_id = $post['province_id'];
    $city_id = $post['city_id'];
    $district_id = $post['district_id'];
    $detail = $post['detail'];
    $is_address = model('address')->addAddress($user_id,$name,$mobile,$province_id,$city_id,$district_id,$detail);
    if($is_address){
      \Org\Response::show(200,'access!');
    }else{
      \Org\Response::show(400,'添加失败!');
    }
}

model

<?php
namespace app\index\model;
use \think\Model;
use app\index\model\Attachment as AttachmentModel;
class Address extends Model
{
  /**
   * 获取一个基本信息
   * @param int $id   行政id
   * @return array|bool|false|\PDOStatement|string|Model
   */
  public function adcodeGetOne($id = 0){
    if(empty($id)) return false;
    $map['adcode'] = $id;
    return \think\Db::name('district')->where($map)->find();
  }
  /**
   * @param $user_id   用户id
   * @param $name     收件人
   * @param $mobile    收件人手机号
   * @param $province_id 省行政id
   * @param $city_id   城市行政id
   * @param $district_id 县区行政id
   * @param $detail    详细地址
   */
  public function addAddress($user_id,$name,$mobile,$province_id,$city_id,$district_id,$detail){
    $is_province = $this->adcodeGetOne($province_id);
    $is_city = $this->adcodeGetOne($city_id);
    $is_district= $this->adcodeGetOne($district_id);
    if(empty($is_province)) \Org\Response::show(400,'无效省份!');
    if(empty($is_city)) \Org\Response::show(400,'无效城市!');
    if(empty($is_district)) \Org\Response::show(400,'无效县区!');
    $time = time();
    $data['province_id'] =$province_id;
    $data['province'] = $is_province['name'];
    $data['city_id'] =$city_id;
    $data['city'] = $is_city['name'];
    $data['district_id'] =$district_id;
    $data['district'] = $is_district['name'];
    $data['detail'] =$detail;
    $data['mobile'] =$mobile;
    $data['name'] =$name;
    $data['user_id'] =$user_id;
    $data['is_delete'] = 0;
    if($this->where($data)->field('id')->find()) return true;
    $data['addtime'] =$time;
    $data['update_time'] =$time;
    if($this->insert($data)){
      return true;
    }else{
      return false;
    }
  }
}

Response

<?php
namespace Org;
class Response {
 const JSON = "json";
 /**
 * 按综合方式输出通信数据
 * @param integer $code 状态码
 * @param string $message 提示信息
 * @param array $data 数据
 * @param string $type 数据类型
 * return string
 */
 public static function show($code, $message = '', $data = array(), $type = self::JSON) {
 if(!is_numeric($code)) {
  return '';
 }
 // $type = 'json';
 isset($_GET['format']) ? $_GET['format'] : self::JSON;
 $result = array(
  'code' => $code,
  'message' => $message,
  'data' => $data,
 );
 if($type == 'json') {
  self::json($code, $message, $data);
  exit;
 } elseif($type == 'array') {
  var_dump($result);
 } elseif($type == 'xml') {
  self::xmlEncode($code, $message, $data);
  exit;
 } else {
  // TODO
 }
 }
 /**
 * 按json方式输出通信数据
 * @param integer $code 状态码
 * @param string $message 提示信息
 * @param array $data 数据
 * return string
 */
 public static function json($code, $message = '', $data = array()) {
 
 if(!is_numeric($code)) {
  return '';
 }
 $result = array(
  'code' => $code,
  'message' => urlencode($message),
  'data' => $data
 );
 echo urldecode(json_encode($result,JSON_UNESCAPED_UNICODE));
 exit;
 }
 /**
 * 按xml方式输出通信数据
 * @param integer $code 状态码
 * @param string $message 提示信息
 * @param array $data 数据
 * return string
 */
 public static function xmlEncode($code, $message, $data = array()) {
 if(!is_numeric($code)) {
  return '';
 }
 $result = array(
  'code' => $code,
  'message' => $message,
  'data' => $data,
 );
 header("Content-Type:text/xml");
 $xml = "<?xml version='1.0' encoding='UTF-8'?>\n";
 $xml .= "<root>\n";
 $xml .= self::xmlToEncode($result);
 $xml .= "</root>";
 echo $xml;
 }
 public static function xmlToEncode($data) {
 $xml = $attr = "";
 foreach($data as $key => $value) {
  if(is_numeric($key)) {
  $attr = " id='{$key}'";
  $key = "item";
  }
  $xml .= "<{$key}{$attr}>";
  $xml .= is_array($value) ? self::xmlToEncode($value) : $value;
  $xml .= "</{$key}>\n";
 }
 return $xml;
 }
}

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

PHP 相关文章推荐
PHP模拟SQL Server的两个日期处理函数
Oct 09 PHP
PHP IN_ARRAY 函数使用注意事项
Jul 24 PHP
php mssql扩展SQL查询中文字段名解决方法
Oct 15 PHP
PHP中函数rand和mt_rand的区别比较
Dec 26 PHP
php操作csv文件代码实例汇总
Sep 22 PHP
PHP树的深度编历生成迷宫及A*自动寻路算法实例分析
Mar 10 PHP
修复ShopNC使用QQ 互联时提示100010 错误
Nov 08 PHP
深入理解PHP原理之执行周期分析
Jun 01 PHP
PHP Oauth授权和本地加密实现方法
Aug 12 PHP
PHP文件上传、客户端和服务器端加限制、抓取错误信息、完整步骤解析
Jan 12 PHP
PHP实现随机生成水印图片功能
Mar 22 PHP
PHP设计模式入门之状态模式原理与实现方法分析
Apr 26 PHP
ThinkPHP5+UEditor图片上传到阿里云对象存储OSS功能示例
Aug 05 #PHP
PHP各种常见经典算法总结【排序、查找、翻转等】
Aug 05 #PHP
php时间戳转换代码详解
Aug 04 #PHP
ThinkPHP5.1框架数据库链接和增删改查操作示例
Aug 03 #PHP
ThinkPHP5&amp;5.1框架关联模型分页操作示例
Aug 03 #PHP
thinkPHP5.1框架使用SemanticUI实现分页功能示例
Aug 03 #PHP
thinkPHP5.1框架中Request类四种调用方式示例
Aug 03 #PHP
You might like
简单采集了yahoo的一些数据
2007/02/14 PHP
PHP实现下载功能的代码
2012/09/29 PHP
phpmyadmin config.inc.php配置示例
2013/08/27 PHP
PHP判断指定时间段的2个方法
2014/03/14 PHP
yii2带搜索功能的下拉框实例详解
2016/05/12 PHP
php文件系统处理方法小结
2016/05/23 PHP
PHP基于cookie实现统计在线人数功能示例
2019/01/16 PHP
PHP中类与对象功能、用法实例解读
2020/03/27 PHP
基于JQuery的Select选择框的华丽变身
2011/08/23 Javascript
Jquery之Ajax运用 学习运用篇
2011/09/26 Javascript
JS刷新框架外页面七种实现代码
2013/02/18 Javascript
javascript合并表格单元格实例代码
2016/01/03 Javascript
JQuery给select添加/删除节点的实现代码
2016/04/26 Javascript
原生js实现回复评论功能
2017/01/18 Javascript
利用Chrome DevTools直接调试Node.js和JavaScript的方法详解(并行)
2017/02/16 Javascript
ie下js不执行的几种可能
2017/02/28 Javascript
JS实现手写parseInt的方法示例
2017/09/24 Javascript
vue 点击按钮实现动态挂载子组件的方法
2018/09/07 Javascript
TypeScript高级用法的知识点汇总
2019/12/17 Javascript
vue实现页面切换滑动效果
2020/06/29 Javascript
Python环境下安装使用异步任务队列包Celery的基础教程
2016/05/07 Python
python selenium UI自动化解决验证码的4种方法
2018/01/05 Python
python实现狄克斯特拉算法
2019/01/17 Python
Python3.5实现的三级菜单功能示例
2019/03/25 Python
python3.6+selenium实现操作Frame中的页面元素
2019/07/16 Python
解决Numpy中sum函数求和结果维度的问题
2019/12/06 Python
Python 实现数组相减示例
2019/12/27 Python
python实现简单井字棋游戏
2020/03/04 Python
捷克时尚网上商店:OTTO
2018/03/15 全球购物
经典c++面试题二
2015/08/14 面试题
个人职业生涯规划书1500字
2013/12/31 职场文书
我的梦中国梦演讲稿
2014/04/23 职场文书
公司采购主管岗位职责
2014/06/17 职场文书
2015年新教师个人工作总结
2015/10/14 职场文书
2016保送生自荐信范文
2016/01/29 职场文书
适合青年人白手起家的创业项目分享
2019/08/16 职场文书