本文实例讲述了thinkPHP5框架接口写法。分享给大家供大家参考,具体如下:
控制器
代码语言:javascript复制/**
* 添加收货地址
*/
public function addAddress(){
$post = $this- request- post();
//验证 唯一规则: 表名,字段名,排除主键值,主键名
$validate = new thinkValidate([
['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)) {
OrgResponse::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){
OrgResponse::show(200,'access!');
}else{
OrgResponse::show(400,'添加失败!');
}
}
model
代码语言:javascript复制<?php
namespace appindexmodel;
use thinkModel;
use appindexmodelAttachment 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 thinkDb::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)) OrgResponse::show(400,'无效省份!');
if(empty($is_city)) OrgResponse::show(400,'无效城市!');
if(empty($is_district)) OrgResponse::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
代码语言:javascript复制<?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程序设计有所帮助。