/**
* 设置数据对象值
* @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]每天TP5-20170109|thinkphp5-Model.php-2
原创
©著作权归作者所有:来自51CTO博客作者lijingshan34的原创作品,请联系作者获取转载授权,否则将追究法律责任
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章