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 相关文章推荐
win7下memCache的安装过程(具体操作步骤)
Jun 28 PHP
使用php检测用户当前使用的浏览器是否为IE浏览器
Dec 03 PHP
19个超实用的PHP代码片段
Mar 14 PHP
优化WordPress的Google字体以加速国内服务器上的运行
Nov 24 PHP
smarty高级特性之过滤器的使用方法
Dec 25 PHP
Linux安装配置php环境的方法
Jan 14 PHP
浅析Yii2 gridview实现批量删除教程
Apr 22 PHP
PHP list() 将数组中的值赋给变量的简单实例
Jun 13 PHP
php获取访问者浏览页面的浏览器类型
Jan 23 PHP
PHP对象的浅复制与深复制的实例详解
Oct 26 PHP
Thinkphp 5.0实现微信企业付款到零钱
Sep 30 PHP
linux mint下安装phpstorm2020包括JDK部分的教程详解
Sep 17 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
超神学院:鹤熙已踏入神圣领域,实力不比凯莎弱
2020/03/02 国漫
PHP利用COM对象访问SQLServer、Access
2006/10/09 PHP
php安全配置 如何配置使其更安全
2011/12/16 PHP
PHP合并数组+号和array_merge的区别
2015/06/25 PHP
ThinkPHP3.2.1图片验证码实现方法
2016/08/19 PHP
详解PHP中的 input属性(隐藏 只读 限制)
2017/08/14 PHP
JS 无法通过W3C验证的处理方法
2010/03/09 Javascript
jQuery 选择器、DOM操作、事件、动画
2010/11/25 Javascript
js判断IE浏览器版本过低示例代码
2013/11/22 Javascript
jquery简单的弹出层浮动层代码
2015/04/27 Javascript
vue分类筛选filter方法简单实例
2017/03/30 Javascript
vue3.0 CLI - 2.5 - 了解组件的三维
2018/09/14 Javascript
vue.config.js常用配置详解
2019/11/14 Javascript
分享8个JavaScript库可更好地处理本地存储
2020/10/12 Javascript
[01:33]真香警告!DOTA2勇士令状不朽珍藏Ⅱ饰品欣赏
2018/06/26 DOTA
python3的输入方式及多组输入方法
2018/10/17 Python
解决Python中定时任务线程无法自动退出的问题
2019/02/18 Python
Python 编程速成(推荐)
2019/04/15 Python
简单了解python gevent 协程使用及作用
2019/07/22 Python
Python中的引用和拷贝实例解析
2019/11/14 Python
python3 dict ndarray 存成json,并保留原数据精度的实例
2019/12/06 Python
CSS3田字格列表的样式编写方法
2018/11/22 HTML / CSS
探究 canvas 绘图中撤销(undo)功能的实现方式详解
2018/05/17 HTML / CSS
【HTML5】Canvas绘制简单图片教程
2016/05/13 HTML / CSS
Html5 APP中监听返回事件处理的方法示例
2018/03/15 HTML / CSS
马来西亚领先的在线礼品店:Giftr
2018/08/23 全球购物
通信工程专业求职信
2014/06/04 职场文书
考试作弊被抓检讨书
2014/10/02 职场文书
安全生产工作汇报材料
2014/10/28 职场文书
2014三年级班主任工作总结
2014/12/05 职场文书
2015年校长新年寄语
2014/12/08 职场文书
开除通知书范本
2015/04/25 职场文书
二婚主持词
2015/06/30 职场文书
MySQL官方导出工具mysqlpump的使用
2021/05/21 MySQL
低门槛开发iOS、Android、小程序应用的前端框架详解
2021/10/16 Javascript
十大最强奥特曼武器:怪兽战斗仪在榜,第五奥特之父只使用过一次
2022/03/18 日漫