利用php 5.4以上版本可以使用的Trait封装APP接口返回的方法,在TinkPHP 5.1中extend是自己重用的代码,vendor主要是通过composer加载的代码;因此,我们的代码放在extend中,新建一个traits文件夹,在里面新建一个文件:ResponseJson.php。其完整的代码如下:
<?php
namespace traits;
/**
* 封装APP返回的数据
* @Author Yeyu2001
* @DateTime 2019-04-14T17:35:10+0800
*/
trait ResponseJson{
// App接口出现业务异常时返回
public function jsonData($code, $message, $data = []) {
return $this->jsonResponse($code, $message, $data);
}
// App接口请求成功时的返回
public function jsonSuccessData($data = []) {
return $this->jsonResponse(0, 'Success', $data);
}
// App接口请求封装
private function jsonResponse($code, $message, $data = []) {
$content = [
'code' => $code,
'msg' => $message,
'data' => $data,
];
return json_encode($content);
}
}
我们在测试控制器中测试引入trait的代码:
<?php
namespace app\admin\controller;
class Test extends Valid {
use \traits\ResponseJson;
//输出页面
public function index() {
return $this->jsonSuccessData();
}
}
在PHP中使用Trait是绝对没有问题的,只要版本在5.4以上!但是在ThinkPHP 中,如何引用第三方的问题,即正确的引用是问题!需要注意的是:
(1)引用Trait须在Class下,上例中Test类已经继承了Valid就不能继承其他类;
(2)USE引用:根号+命名空间+类名(Trait名)
网友评论