当前位置: 首页 > news >正文

【vue2.7.16系列】手把手教你搭建后台系统__provider绑定类标识(11)

依赖注入的类统一由容器进行管理,大多数情况下是在自动绑定并且实例化的。不过你可以随时进行手动绑定类到容器中(通常是在服务类的register方法中进行绑定),支持多种绑定方式。

json类

之前我们在登录接口是这样返回数据的
return json($this->services->login($account, $password, 'admin'));

因为还会有无数个接口返回,我们有必要对其封装一下。
xkadmin/uitls目录下新建Json.php工具类。内容如下:

<?phpnamespace xkadmin\utils;use think\Response;
use think\facade\Lang;
use think\facade\Config;/*** Json 输出工具类* Class Json* @package xkadmin\utils*/
class Json
{private int $code = 200;/*** 设置响应状态码* @param int $code* @return self*/public function code(int $code): self{$this->code = $code;return $this;}/*** 生成 JSON 响应* @param int $status 状态码* @param string $msg 消息* @param array|null $data 数据* @return Response*/public function make(int $status, string $msg,?array $data = null): Response{$request = app()->request;$res = ['status' => $status, 'msg' => $msg];if (!is_null($data)) {$res['data'] = $data;}// 处理多语言消息if ($res['msg'] &&!is_numeric($res['msg'])) {$range = $request->get('lang')?? $request->cookie(Config::get('lang.cookie_var'));if ($range && $range!== 'deleted') {$res['msg'] = Lang::get($res['msg'], [], $range);} else {$res['msg'] = Lang::get($res['msg'], [], 'zh-cn');}}return Response::create($res, 'json', $this->code);}/*** 生成成功响应* @param string $msg 消息* @param array|null $data 数据* @return Response*/public function success($msg = 'ok',?array $data = null): Response{if (is_array($msg)) {$data = $msg;$msg = 'ok';}return $this->make(200, $msg, $data);}/*** 别名方法 successful* @param mixed...$args 参数* @return Response*/public function successful(...$args): Response{return $this->success(...$args);}/*** 生成失败响应* @param string $msg 消息* @param array|null $data 数据* @return Response*/public function fail($msg = 'fail',?array $data = null): Response{if (is_array($msg)) {$data = $msg;$msg = 'fail';}return $this->make(400, $msg, $data);}/*** 自定义状态响应* @param string $status 状态字符串* @param string|array $msg 消息或数据数组* @param array $result 结果数据* @return Response*/public function status($status, $msg, $result = []): Response{$status = strtoupper($status);if (is_array($msg)) {$result = $msg;$msg = 'ok';}return $this->success($msg, compact('status', 'result'));}
}

绑定JSON类到容器中

app/providor.php文件中,绑定Json类。

<?php
use app\Request;
use app\ExceptionHandle;
use xkadmin\utils\Json;// 容器Provider定义文件
return ['json'          => Json::class,'think\Request'          => Request::class,'think\exception\Handle' => ExceptionHandle::class,
];

封装共用返回json方法

xkadmin/basic/BaseController.php中,增加下面两个方法

/*** 成功返回json数据* @access public* @param  array $data 数据* @return array json信息*/
public function success($data)
{return app('json')->success($data);
}/*** 失败返回json数据* @access public* @param  array $data 数据* @return array json信息*/
public function fail($data)
{return app('json')->fail($data);
}

调用

login控制器接口中返回数据,就可以用下面这种方式。

return $this->success($this->services->login($account, $password, 'admin'));

参考

  • 容器和依赖注入

http://www.mrgr.cn/news/56037.html

相关文章:

  • BurpSuite渗透工具的简单使用
  • 【The Art of Unit Testing 3_自学笔记02】第二章:编写第一个单元测试(上)
  • 《疯狂浙江一女子出轨邻居,撩技惊人》
  • 学习eNSP对提升就业竞争力有多大帮助?
  • 代码随想录算法训练营第三十一天|56. 合并区间、738.单调递增的数字
  • 植物大战僵尸杂交版游戏分享
  • 【C#】调用本机AI大模型流式返回
  • typescript 中的类型推断
  • 「C/C++」C++ STL容器库 之 std::string 字符串类
  • 银行软件测试有哪些测试点?一般银行的软件测试工作流程有哪些?
  • 2226733-37-3,Mal-amido-PEG24-NHS是一种结合了马来酰亚胺和聚乙二醇的活性酯化合物
  • 医疗健康行业获客难?来看这位区域总经理的业绩增长破局之道
  • sql获取时间差
  • WebGl 使用平行矩阵实现图像平移
  • 浪潮云启操作系统(InLinux)bcache缓存实践:理解OpenStack环境下虚拟机卷、Ceph OSD、bcache设备之间的映射关系
  • 太极0.5
  • 如何开发电商平台?直播带货系统源码的核心技术解析
  • 基于SSM网络在线考试系统的设计
  • CentOS7上下载安装 Docker Compose
  • R语言机器学习算法实战系列(六)K-邻近算法 (K-Nearest Neighbors)
  • 解决:Cannot find bean with qualifier ‘xxx‘
  • GSM850分几个Channel,为什么这样分?
  • 多品牌NVR管理工具/设备EasyNVR多个NVR同时管理实现技术赋能车载监控行业
  • 大范围实景三维智能调色 | 模方自动化匀色解决方案
  • 【Linux】文件IO深度解析:文件描述符与重定向的奥秘
  • 人工智能的时代,用好这些AI工具,闲暇时间月入过万不是梦!