本文实例讲述了thinkPHP5框架接口写法。分享给大家供大家参考,具体如下:
控制器
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
/**
* 添加收货地址
*/
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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
<?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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
|
<?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程序设计有所帮助。
原文链接:https://blog.csdn.net/qq_32562501/article/details/82684030