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 相关文章推荐
截获网站title标签之家内容的例子
Oct 09 PHP
网络资源
Oct 09 PHP
php一个找二层目录的小东东
Aug 02 PHP
php 启动时报错的简单解决方法
Jan 27 PHP
php获取四位字母和数字的随机数的实现方法
Jan 09 PHP
php判断两个浮点数是否相等的方法
Mar 14 PHP
PHP实现简单实用的验证码类
Jul 29 PHP
yii2实现根据时间搜索的方法
May 25 PHP
php微信开发之百度天气预报
Nov 18 PHP
PHP如何防止XSS攻击与XSS攻击原理的讲解
Mar 22 PHP
Yii2处理密码加密及验证的方法
May 12 PHP
PHP使用CURL实现下载文件功能示例
Jun 03 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
生成静态页面的PHP类
2006/07/15 PHP
php中将汉字转换成拼音的函数代码
2012/09/08 PHP
PHP获取数组长度或某个值出现次数的方法
2015/02/11 PHP
PHP实现即时输出、实时输出内容方法
2015/05/27 PHP
jQuery结合Json提交数据到Webservice,并接收从Webservice返回的Json数据
2011/02/18 Javascript
JqGrid web打印实现代码
2011/05/31 Javascript
jQuery源码分析-04 选择器-Sizzle-工作原理分析
2011/11/14 Javascript
JS链式调用的实现方法
2013/03/07 Javascript
JS实现图片横向滚动效果示例代码
2013/09/04 Javascript
js调用浏览器打印模块实现点击按钮触发自定义函数
2014/03/21 Javascript
详解原生js实现offset方法
2017/06/15 Javascript
JS中的多态实例详解
2017/10/15 Javascript
使用Vue中 v-for循环列表控制按钮隐藏显示功能
2019/04/23 Javascript
原生JS实现随机点名项目的实例代码
2019/04/30 Javascript
vue项目打包后上传至GitHub并实现github-pages的预览
2019/05/06 Javascript
vue路由传参页面刷新参数丢失问题解决方案
2019/10/08 Javascript
微信小程序实现简单文字跑马灯
2020/05/26 Javascript
python 布尔操作实现代码
2013/03/23 Python
介绍Python中内置的itertools模块
2015/04/29 Python
Python sqlite3事务处理方法实例分析
2017/06/19 Python
pandas 快速处理 date_time 日期格式方法
2018/11/12 Python
解决python3中cv2读取中文路径的问题
2018/12/05 Python
git查看、创建、删除、本地、远程分支方法详解
2020/02/18 Python
Python中flatten( ),matrix.A用法说明
2020/07/05 Python
python读取excel数据并且画图的实现示例
2021/02/08 Python
使用CSS3实现字体颜色渐变的实现
2020/08/10 HTML / CSS
借助HTML5 Canvas来绘制三角形和矩形等多边形的方法
2016/03/14 HTML / CSS
阿拉伯世界最大的电子商务网站:Souq沙特阿拉伯
2016/10/28 全球购物
乡镇党的群众路线教育实践活动制度建设计划
2014/11/03 职场文书
解除劳动关系协议书2篇
2014/11/28 职场文书
烟台的海导游词
2015/02/02 职场文书
2015年社区工会工作总结
2015/05/26 职场文书
法院执行局工作总结
2015/08/11 职场文书
2016党员学习作风建设心得体会
2016/01/21 职场文书
SpringBoot 集成Redis 过程
2021/06/02 Redis
Mysql8.0递归查询的简单用法示例
2021/08/04 MySQL