BaseObject.php 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: Bear
  5. * Date: 2018/11/10
  6. * Time: 下午6:06
  7. */
  8. namespace app\main\model\object;
  9. abstract class BaseObject
  10. {
  11. /**
  12. * 将参数绑定对象
  13. * @param $params
  14. * @param array $key_map 如果参数key与对象key不一致,需要添加映射
  15. * @return $this
  16. */
  17. public function bind($params, $key_map = [])
  18. {
  19. if (is_array($params)) {
  20. foreach ($params as $field => $value) {
  21. if (array_key_exists($field, $key_map)) {
  22. $field = $key_map[$field];
  23. }
  24. $this->$field = $value;
  25. }
  26. }
  27. return $this;
  28. }
  29. /**
  30. * 设置属性
  31. * @param $field
  32. * @param $value
  33. * @return BaseObject
  34. */
  35. public function set($field, $value)
  36. {
  37. return $this->bind([$field => $value]);
  38. }
  39. //获取属性
  40. public function get($field)
  41. {
  42. return $this->{$field};
  43. }
  44. /**
  45. * 转化为数组
  46. * @return mixed
  47. */
  48. public function toArray()
  49. {
  50. $data = [];
  51. foreach ($this as $field => $value) {
  52. if ($value === NULL) {
  53. continue;
  54. }
  55. $data[$field] = $value;
  56. }
  57. return json_decode(json_encode($data), true);
  58. }
  59. /**
  60. * 转化为JSON
  61. */
  62. public function toJson()
  63. {
  64. return json_encode($this, JSON_UNESCAPED_UNICODE);
  65. }
  66. /**
  67. * 转化为xml
  68. * @param array $data
  69. * @param bool $root
  70. * @return string
  71. */
  72. public function toXml($data = [], $root = true)
  73. {
  74. if (!$data) {
  75. $data = $this->toArray();
  76. }
  77. $str = "";
  78. if ($root) $str .= "<xml>";
  79. foreach ($data as $key => $val) {
  80. if (is_array($val)) {
  81. $child = $this->toXml($val, false);
  82. $str .= "<$key>$child</$key>";
  83. } else {
  84. $str .= "<$key><![CDATA[$val]]></$key>";
  85. }
  86. }
  87. if ($root) $str .= "</xml>";
  88. return $str;
  89. }
  90. /**
  91. * @param $keys
  92. * @return static
  93. */
  94. public function filterObj($keys)
  95. {
  96. $return = new static();
  97. foreach ($keys as $key) {
  98. $return->$key = $this->$key;
  99. }
  100. return $return;
  101. }
  102. /**
  103. * @param $keys
  104. * @return array
  105. */
  106. public function filterArray($keys)
  107. {
  108. $return = [];
  109. foreach ($keys as $key) {
  110. $return[$key] = $this->$key;
  111. }
  112. return $return;
  113. }
  114. }