所以基本上我在两种改变模型数据的方法之间挣扎。
方法1:(函数直接在模型数据中更改)
$this->Model->set($data);
$this->Model->changeSomeData();
方法二:(带输入输出的函数)
$data = $this->Model->data;
$newdata = $this->Model->changeSomeData($data);
$this->Model->set($newdata);
有人能给点光吗,用什么,为什么?
谢谢
我确定这是Cake 1的遗留问题。x中调用Model->set($data)
是常见的做法。我猜这是因为validate()
, create()
和save()
需要将id
或data
分配给模型。
随着代码的成熟,这种做法变得过时,因为save()
将接受$data
并执行验证。
另一个问题是Cake为模型实例使用缓存。两个不相关的类可能会更改模型的数据,因为它们共享相同的引用。
所以我强烈推荐方法#2。
代码更容易阅读,更容易维护。