Json.php 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. <?php
  2. namespace utils;
  3. use think\facade\Config;
  4. use think\facade\Lang;
  5. use think\Response;
  6. /**
  7. * Json输出类
  8. * Class Json
  9. * @package home\utils
  10. */
  11. class Json
  12. {
  13. private $code = 200;
  14. public function code (int $code): self
  15. {
  16. $this->code = $code;
  17. return $this;
  18. }
  19. public function make (int $code, string $msg, ?array $data = null): Response
  20. {
  21. $request = app()->request;
  22. $res = compact('code', 'msg');
  23. $res['data'] = $data;
  24. if ($res['msg'] && !is_numeric($res['msg'])) {
  25. if (!$range = $request->get('lang')) {
  26. $range = $request->cookie(Config::get('lang.cookie_var'));
  27. }
  28. $res['msg'] = Lang::get($res['msg'], [], $range !== 'deleted' && $range ? $range : 'zh-cn');
  29. }
  30. return Response::create($res, 'json', $this->code);
  31. }
  32. public function success ($msg = 'ok', ?array $data = null): Response
  33. {
  34. if (is_array($msg)) {
  35. $data = $msg;
  36. $msg = 'ok';
  37. }
  38. return $this->make(200, $msg, $data);
  39. }
  40. public function successful (...$args): Response
  41. {
  42. return $this->success(...$args);
  43. }
  44. public function fail ($msg = 'fail', ?array $data = null): Response
  45. {
  46. if (is_array($msg)) {
  47. $data = $msg;
  48. $msg = 'ok';
  49. }
  50. return $this->make(400, $msg, $data);
  51. }
  52. public function status ($code, $msg, $result = [])
  53. {
  54. $code = strtoupper($code);
  55. if (is_array($msg)) {
  56. $result = $msg;
  57. $msg = 'ok';
  58. }
  59. return $this->success($msg, compact('code', 'result'));
  60. }
  61. /**
  62. * 返回json
  63. * @param int $code
  64. * @param string $msg
  65. * @param array|null $data
  66. * @return Response
  67. */
  68. public function json_success ($msg = 'ok', ?array $data = null, $code = 200): Response
  69. {
  70. if (is_array($msg)) {
  71. $data = !isset($msg['data']) && !isset($msg['msg']) ? $msg : (isset($msg['data']) ? $msg['data'] : null);
  72. $code = isset($msg['code']) ? $msg['code'] : 200;
  73. $msg = isset($msg['msg']) ? $msg['msg'] : 'ok';
  74. }
  75. return $this->make($code, $msg, $data);
  76. }
  77. /**
  78. * 返回json
  79. * @param int $code
  80. * @param string $msg
  81. * @param array|null $data
  82. * @return Response
  83. */
  84. public function json_error ($msg = 'error', $code = 500, array $data = null): Response
  85. {
  86. if (is_array($msg)) {
  87. $data = !isset($msg['data']) && !isset($msg['msg']) ? $msg : (isset($msg['data']) ? $msg['data'] : null);
  88. $code = isset($msg['code']) ? $msg['code'] : 500;
  89. $msg = isset($msg['msg']) ? $msg['msg'] : 'ok';
  90. }
  91. return $this->make($code, $msg, $data);
  92. }
  93. }