thinkPHP5框架接口写法简单示例

本文实例讲述了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相关内容感兴趣的读者可查看本站专题:《ThinkPHP入门教程》、《thinkPHP模板操作技巧总结》、《ThinkPHP常用方法总结》、《codeigniter入门教程》、《CI(CodeIgniter)框架进阶教程》、《Zend FrameWork框架入门教程》及《PHP模板技术总结》。

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

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容