改进Model类的data方法 支持修改器

This commit is contained in:
thinkphp
2016-07-04 09:53:48 +08:00
parent 920d2a2ea0
commit 9ff150e81a

View File

@@ -204,7 +204,7 @@ abstract class Model implements \JsonSerializable, \ArrayAccess
{} {}
/** /**
* 设置数据对象值(不进行修改器处理) * 设置数据对象值
* @access public * @access public
* @param mixed $data 数据或者属性名 * @param mixed $data 数据或者属性名
* @param mixed $value 值 * @param mixed $value 值
@@ -212,12 +212,20 @@ abstract class Model implements \JsonSerializable, \ArrayAccess
*/ */
public function data($data, $value = null) public function data($data, $value = null)
{ {
if (is_object($data)) { if (is_string($data)) {
$this->data = get_object_vars($data);
} elseif (is_array($data)) {
$this->data = $data;
} else {
$this->data[$data] = $value; $this->data[$data] = $value;
} else {
if (is_object($data)) {
$data = get_object_vars($data);
}
if (true === $value) {
// 数据对象赋值
foreach ($data as $key => $value) {
$this->setAttr($key, $value, $data);
}
} else {
$this->data = $data;
}
} }
return $this; return $this;
} }
@@ -989,8 +997,8 @@ abstract class Model implements \JsonSerializable, \ArrayAccess
if ($name instanceof Query) { if ($name instanceof Query) {
return $name; return $name;
} }
$model = new static(); $model = new static();
$params = func_get_args(); $params = func_get_args();
$params[0] = $model->db(); $params[0] = $model->db();
if ($name instanceof \Closure) { if ($name instanceof \Closure) {
call_user_func_array($name, $params); call_user_func_array($name, $params);