标签:thinkphp5
/** * 设置数据对象值 * @access public * @param mixed $data 数据或者属性名 * @param mixed $value 值 * @return $this */ public function data($data, $value = null) {// 设置数据对象值 if (is_string($data)) {// is_string($data) $this->data[$data] = $value;// 实现了可以对数据的 key value 赋值 } else { // 清空数据 $this->data = [];// 非字符串 首先 清空 数据 if (is_object($data)) {// 如果是对象 $data = get_object_vars($data);// 获取对象的值 } if (true === $value) {// 如果 value 为 true // 数据对象赋值 foreach ($data as $key => $value) {// 数据对象赋值 $this->setAttr($key, $value, $data); } } else {// 默认的话,你说的就是数组了, $this->data = $data; } } return $this;// 执行连贯性 操作 }// 老刘 你的团队 越来越弱了,这个版本 不如 3.2 的那个版本的这个函数 /** * 3.2 版本的, 各位看客 可以对比一下 * 设置数据对象值 * @access public * @param mixed $data 数据 * @return Model */ // public function data($data=‘‘){ // if(‘‘ === $data && !empty($this->data)) { // return $this->data; // } // if(is_object($data)){ // $data = get_object_vars($data); // }elseif(is_string($data)){ // parse_str($data,$data); // }elseif(!is_array($data)){ // E(L(‘_DATA_TYPE_INVALID_‘)); // } // $this->data = $data; // return $this; // } /** * 获取对象原始数据 如果不存在指定字段返回false * @access public * @param string $name 字段名 留空获取全部 * @return mixed * @throws InvalidArgumentException */ public function getData($name = null) {// 新增了 获取数据的函数,将之前的功能 进行 划分 // 返回全部 跟 返回key if (is_null($name)) { return $this->data; } elseif (array_key_exists($name, $this->data)) { return $this->data[$name]; } else { throw new InvalidArgumentException(‘property not exists:‘ . $this->class . ‘->‘ . $name); } } /** * 修改器 设置数据对象值 * @access public * @param string $name 属性名 * @param mixed $value 属性值 * @param array $data 数据 * @return $this */ public function setAttr($name, $value, $data = []) {// 修改器 设置数据对象值 if (is_null($value) && $this->autoWriteTimestamp && in_array($name, [$this->createTime, $this->updateTime])) { // 自动写入的时间戳字段 $value = $this->autoWriteTimestamp($name);// 写入时间 } else { // 检测修改器 $method = ‘set‘ . Loader::parseName($name, 1) . ‘Attr‘;// 拥有专门 针对这个属性的处理函数 if (method_exists($this, $method)) {// 设置当前的属性 $value = $this->$method($value, array_merge($data, $this->data)); } elseif (isset($this->type[$name])) { // 类型转换 $value = $this->writeTransform($value, $this->type[$name]);//写入数据类型转换 } } // 标记字段更改 if (!isset($this->data[$name]) || ($this->data[$name] != $value && !in_array($name, $this->change))) { $this->change[] = $name;// 标记字段 更改 } // 设置数据对象属性 $this->data[$name] = $value;// 设置 数据对象 属性 return $this; }
本文出自 “专注php 群号:414194301” 博客,请务必保留此出处http://jingshanls.blog.51cto.com/3357095/1879826
[李景山php]每天TP5-20170109|thinkphp5-Model.php-2
标签:thinkphp5
原文地址:http://jingshanls.blog.51cto.com/3357095/1879826