AbstractModel.php 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. <?php
  2. namespace addons\WechatVideoShop\common\expand\sdk\weixin;
  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. if (!empty($v->toArray())) $data[$key][$k] = $v->toArray();
  37. } else {
  38. if (is_array($v)) {
  39. if (!empty($v)) $data[$key][$k] = $v;
  40. } elseif ($v !== '') $data[$key][$k] = $v;
  41. }
  42. }
  43. } else {
  44. if (is_array($value)) {
  45. if (!empty($value)) $data[$key] = $value;
  46. } elseif ($value !== '') $data[$key] = $value;
  47. }
  48. }
  49. }
  50. return $data;
  51. }
  52. /**
  53. * @param int $code
  54. * @return string|null
  55. */
  56. public function getError(int $code)
  57. {
  58. $error_map = array_merge($this->error_message_map, $this->common_error_message_map);
  59. return $error_map[$code] ?? null;
  60. }
  61. /**
  62. * @param array $data
  63. * @return string
  64. */
  65. public function valid(array $data): string
  66. {
  67. if (!isset($data['errcode'])) return '未知错误';
  68. if ($data['errcode'] != 0) {
  69. $err = $this->getError($data['errcode']);
  70. if ($err === null) return $data['errmsg'];
  71. return $err;
  72. }
  73. return '';
  74. }
  75. }