CakePHP编辑模型数据,最佳实践


CakePHP editing model data, best practice?

所以基本上我在两种改变模型数据的方法之间挣扎。

方法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()需要将iddata分配给模型。

随着代码的成熟,这种做法变得过时,因为save()将接受$data并执行验证。

这里的问题是CakePHP将模型和实体合并到一个类中。一个好的数据库布局应该把模型和实体分开。这就是我认为他们正在做的蛋糕3.x

另一个问题是Cake为模型实例使用缓存。两个不相关的类可能会更改模型的数据,因为它们共享相同的引用。

所以我强烈推荐方法#2。

代码更容易阅读,更容易维护。