AbstractModel.php 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. <?php
  2. namespace addons\QiDingDong\common\expand\sdk\qidingdong;
  3. abstract class AbstractModel
  4. {
  5. protected $error_message_map = [];
  6. private $common_error_message_map = [
  7. -1 => '系统异常',
  8. 9401020 => '参数有误'
  9. ];
  10. protected $_data = [];
  11. public function __set($name, $value)
  12. {
  13. $this->_data[$name] = $value;
  14. }
  15. public function __get($name)
  16. {
  17. return $this->_data[$name] ?? null;
  18. }
  19. public function __isset($name)
  20. {
  21. return !empty($this->_data[$name]);
  22. }
  23. /**
  24. * @return array
  25. */
  26. public function toArray()
  27. {
  28. $data = [];
  29. foreach ($this->_data as $key => $value) {
  30. if ($value instanceof AbstractModel) {
  31. $data[$key] = $value->toArray();
  32. } else {
  33. if (is_array($value)) {
  34. foreach ($value as $k => $v) {
  35. if ($v instanceof AbstractModel) {
  36. $data[$key][$k] = $v->toArray();
  37. } else {
  38. $data[$key][$k] = $v;
  39. }
  40. }
  41. } else {
  42. $data[$key] = $value;
  43. }
  44. }
  45. }
  46. return $data;
  47. }
  48. /**
  49. * @param int $code
  50. * @return string|null
  51. */
  52. public function getError(int $code)
  53. {
  54. $error_map = array_merge($this->error_message_map, $this->common_error_message_map);
  55. return $error_map[$code] ?? null;
  56. }
  57. /**
  58. * @param array $data
  59. * @return string
  60. */
  61. public function valid(array $data): string
  62. {
  63. if (!isset($data['errcode'])) return '未知错误';
  64. if ($data['errcode'] != 0) {
  65. $err = $this->getError($data['errcode']);
  66. if ($err === null) return $data['errmsg'];
  67. return $err;
  68. }
  69. return '';
  70. }
  71. }