[李景山php]每天TP5-20170109|thinkphp5-Model.php-2

    /**
     * 设置数据对象值
     * @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;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值