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配置心得包含MYSQL5乱码解决
Nov 20 PHP
php file_put_contents()功能函数(集成了fopen、fwrite、fclose)
May 24 PHP
深入解析PHP垃圾回收机制对内存泄露的处理
Jun 14 PHP
使用Smarty 获取当前日期时间和格式化日期时间的方法详解
Jun 18 PHP
php读取mysql的简单实例
Jan 15 PHP
PHP实现根据设备类型自动跳转相应页面的方法
Jul 24 PHP
php实现检查文章是否被百度收录
Jan 27 PHP
php实现TCP端口检测的方法
Apr 01 PHP
简单谈谈PHP中的Reload操作
Dec 12 PHP
PHP __call()方法实现委托示例
May 20 PHP
php使用filter_var函数判断邮箱,url,ip格式示例
Jul 06 PHP
thinkphp5 框架结合plupload实现图片批量上传功能示例
Apr 04 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/03 欧美动漫
smarty基础之拼接字符串的详解
2013/06/18 PHP
php多进程并发编程防止出现僵尸进程的方法分析
2020/02/28 PHP
Js的MessageBox
2006/12/03 Javascript
Prototype1.6 JS 官方下载地址
2007/11/30 Javascript
document.getElementById方法在Firefox与IE中的区别
2010/05/18 Javascript
JS函数验证总结(方便js客户端输入验证)
2010/10/29 Javascript
Javascript跨域请求的4种解决方式
2013/03/17 Javascript
JavaScript中的值是按值传递还是按引用传递问题探讨
2015/01/30 Javascript
js中常用的Math方法总结
2017/01/12 Javascript
HTML5+Canvas调用手机拍照功能实现图片上传(上)
2017/04/21 Javascript
vue实现未登录跳转到登录页面的方法
2018/07/17 Javascript
JS实现随机生成10个手机号的方法示例
2018/12/07 Javascript
js array数组对象操作方法汇总
2019/03/18 Javascript
vue.js 2.*项目环境搭建、运行、打包发布的详细步骤
2019/05/01 Javascript
javascript中如何判断类型汇总
2019/05/14 Javascript
React中使用外部样式的3种方式(小结)
2019/05/28 Javascript
JavaScript监听一个DOM元素大小变化
2020/04/26 Javascript
js最全的数组的降维5种办法(小结)
2020/04/28 Javascript
vue3.0 自适应不同分辨率电脑的操作
2021/02/06 Vue.js
Python基于回溯法子集树模板解决马踏棋盘问题示例
2017/09/11 Python
Python cookbook(数据结构与算法)对切片命名清除索引的方法
2018/03/13 Python
python利用高阶函数实现剪枝函数
2018/03/20 Python
Python使用pymysql从MySQL数据库中读出数据的方法
2018/07/25 Python
python3使用flask编写注册post接口的方法
2018/12/28 Python
python 去除二维数组/二维列表中的重复行方法
2019/01/23 Python
Pandas实现dataframe和np.array的相互转换
2019/11/30 Python
浅谈pymysql查询语句中带有in时传递参数的问题
2020/06/05 Python
python读取hdfs并返回dataframe教程
2020/06/05 Python
理肤泉加拿大官网:La Roche-Posay加拿大
2018/07/06 全球购物
Strawberrynet草莓网新加坡站:护肤、彩妆、香水及美发产品
2018/08/31 全球购物
俄罗斯在线水暖商店:Perfecto.ru
2019/10/25 全球购物
大学秋游活动方案
2014/02/11 职场文书
电气自动化求职信
2014/06/24 职场文书
2014年化验室工作总结
2014/11/21 职场文书
学习型家庭事迹材料(2016精选版)
2016/02/29 职场文书