JsonResult.php 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260
  1. <?php
  2. /**
  3. * json result vo
  4. * ---------------------------------------------------------------------
  5. * @author yangjian<yangjian102621@gmail.com>
  6. * @since v1.2.1
  7. */
  8. class JsonResult {
  9. const CODE_SUCCESS = "000";
  10. const CODE_FAIL = "001";
  11. /**
  12. * 数据载体
  13. * @var array
  14. */
  15. private $data;
  16. /**
  17. * 列表数据条数
  18. * @var int
  19. */
  20. private $count;
  21. /**
  22. * 当前数据页码
  23. * @var int
  24. */
  25. private $page;
  26. /**
  27. * 每页显示数据条数
  28. * @var int
  29. */
  30. private $pagesize;
  31. /**
  32. * 附带数据
  33. * @var mixed
  34. */
  35. private $extra;
  36. /**
  37. * 错误代码
  38. * @var string
  39. */
  40. private $code = self::CODE_SUCCESS;
  41. /**
  42. * 状态码信息
  43. * @var array
  44. */
  45. private static $_CODE_STATUS = [
  46. self::CODE_SUCCESS => '操作成功.',
  47. self::CODE_FAIL => '系统开了小差.',
  48. ];
  49. /**
  50. * 消息
  51. * @var string
  52. */
  53. private $message;
  54. /**
  55. * JsonResult constructor.
  56. * @param $code
  57. * @param $message
  58. */
  59. public function __construct($code=null, $message=null){
  60. $this->setCode($code);
  61. $this->setMessage($message);
  62. }
  63. /**
  64. * 创建 JsonResult 实例, 并输出
  65. * @param $code
  66. * @param $message
  67. * @return JsonResult
  68. */
  69. public static function result($code, $message) {
  70. $result = new self($code, $message);
  71. $result->output();
  72. }
  73. /**
  74. * 返回一个成功的 result vo
  75. * @param string $message
  76. * @return JsonResult
  77. */
  78. public static function success($message='操作成功') {
  79. $result = new self(self::CODE_SUCCESS, $message);
  80. $result->output();
  81. }
  82. /**
  83. * 返回一个失败的 result vo
  84. * @param string $message
  85. * @return JsonResult
  86. */
  87. public static function fail($message='系统开了小差') {
  88. $result = new self(self::CODE_FAIL, $message);
  89. $result->output();
  90. }
  91. /**
  92. * 返回jsonp数据格式
  93. * @param $code
  94. * @param $message
  95. * @param $callback
  96. */
  97. public static function jsonp($code, $message, $callback){
  98. $result = new self($code, $message);
  99. die($callback. "(". $result .")");
  100. }
  101. /**
  102. * @return int
  103. */
  104. public function getCode()
  105. {
  106. return $this->code;
  107. }
  108. /**
  109. * @param int $code
  110. */
  111. public function setCode($code)
  112. {
  113. $this->code = $code;
  114. }
  115. /**
  116. * @return the $message
  117. */
  118. public function getMessage() {
  119. return $this->message;
  120. }
  121. /**
  122. * @param string $message
  123. */
  124. public function setMessage($message) {
  125. $this->message = $message;
  126. }
  127. /**
  128. * @return array
  129. */
  130. public function getData()
  131. {
  132. return $this->data;
  133. }
  134. /**
  135. * @param array $data
  136. */
  137. public function setData($data)
  138. {
  139. $this->data = $data;
  140. }
  141. /**
  142. * @return int
  143. */
  144. public function getCount()
  145. {
  146. return $this->count;
  147. }
  148. /**
  149. * @param int $count
  150. */
  151. public function setCount($count)
  152. {
  153. $this->count = $count;
  154. }
  155. /**
  156. * @return int
  157. */
  158. public function getPage()
  159. {
  160. return $this->page;
  161. }
  162. /**
  163. * @param int $page
  164. */
  165. public function setPage($page)
  166. {
  167. $this->page = $page;
  168. }
  169. /**
  170. * @return int
  171. */
  172. public function getPagesize()
  173. {
  174. return $this->pagesize;
  175. }
  176. /**
  177. * @param int $pagesize
  178. */
  179. public function setPagesize($pagesize)
  180. {
  181. $this->pagesize = $pagesize;
  182. }
  183. /**
  184. * @return mixed
  185. */
  186. public function getExtra()
  187. {
  188. return $this->extra;
  189. }
  190. /**
  191. * @param mixed $extra
  192. */
  193. public function setExtra($extra)
  194. {
  195. $this->extra = $extra;
  196. }
  197. /**
  198. * 判断是否成功
  199. * @return bool
  200. */
  201. public function isSucess() {
  202. return $this->code == self::CODE_SUCCESS;
  203. }
  204. /**
  205. * 转换字符串
  206. * @return string
  207. */
  208. public function __toString() {
  209. if ( !$this->getMessage() ) {
  210. $this->setMessage(self::$_CODE_STATUS[$this->code]);
  211. }
  212. return json_encode(array(
  213. 'code'=>$this->getCode(),
  214. 'message'=>$this->getMessage(),
  215. 'count'=>$this->getCount(),
  216. 'page'=>$this->getPage(),
  217. 'pagesize'=>$this->getPagesize(),
  218. 'extra'=>$this->getExtra(),
  219. 'data'=>$this->getData()), JSON_UNESCAPED_UNICODE);
  220. }
  221. /**
  222. * 以json格式输出
  223. */
  224. public function output() {
  225. header('Content-type: application/json;charset=utf-8');
  226. echo $this;
  227. die();
  228. }
  229. }