123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 |
- <?php
- /**
- * Created by PhpStorm.
- * User: Bear
- * Date: 2018/11/10
- * Time: 下午6:06
- */
- namespace app\main\model\object;
- abstract class BaseObject
- {
- /**
- * 将参数绑定对象
- * @param $params
- * @param array $key_map 如果参数key与对象key不一致,需要添加映射
- * @return $this
- */
- public function bind($params, $key_map = [])
- {
- if (is_array($params)) {
- foreach ($params as $field => $value) {
- if (array_key_exists($field, $key_map)) {
- $field = $key_map[$field];
- }
- $this->$field = $value;
- }
- }
- return $this;
- }
- /**
- * 设置属性
- * @param $field
- * @param $value
- * @return BaseObject
- */
- public function set($field, $value)
- {
- return $this->bind([$field => $value]);
- }
- //获取属性
- public function get($field)
- {
- return $this->{$field};
- }
- /**
- * 转化为数组
- * @return mixed
- */
- public function toArray()
- {
- $data = [];
- foreach ($this as $field => $value) {
- if ($value === NULL) {
- continue;
- }
- $data[$field] = $value;
- }
- return json_decode(json_encode($data), true);
- }
- /**
- * 转化为JSON
- */
- public function toJson()
- {
- return json_encode($this, JSON_UNESCAPED_UNICODE);
- }
- /**
- * 转化为xml
- * @param array $data
- * @param bool $root
- * @return string
- */
- public function toXml($data = [], $root = true)
- {
- if (!$data) {
- $data = $this->toArray();
- }
- $str = "";
- if ($root) $str .= "<xml>";
- foreach ($data as $key => $val) {
- if (is_array($val)) {
- $child = $this->toXml($val, false);
- $str .= "<$key>$child</$key>";
- } else {
- $str .= "<$key><![CDATA[$val]]></$key>";
- }
- }
- if ($root) $str .= "</xml>";
- return $str;
- }
- /**
- * @param $keys
- * @return static
- */
- public function filterObj($keys)
- {
- $return = new static();
- foreach ($keys as $key) {
- $return->$key = $this->$key;
- }
- return $return;
- }
- /**
- * @param $keys
- * @return array
- */
- public function filterArray($keys)
- {
- $return = [];
- foreach ($keys as $key) {
- $return[$key] = $this->$key;
- }
- return $return;
- }
- }
|