传递对象或对象id更好吗?

时间:2014-07-31 16:40:06

标签: php yii

这是一个假设的问题,我只想听听一些意见。有人问过类似的问题,但我认为答案不是很清楚/令人满意。

所以,让我们说我有一个支付一些人的功能。这些个体被组合在一个找到的对象中,该对象是从查询到数据库中创建的。

对于这个功能,我有两个选择。 我可以

  1. 让它接受$ list_id(我可以用来查询数据库并查找我应该支付的所有人)
  2. 或者我可以

    1. 传递个人的对象 这意味着我已经使用list_id查询了数据库。
    2. 这是否涉及到最佳实践?将数据对象从控制器传递到模型是否比简单地调用id需要更多内存/更慢?

1 个答案:

答案 0 :(得分:1)

我想说这取决于。如果您只使用ID,因为您可以使用PDO或直接sql轻松操作数据库而不需要模型,那么是的,内存更快,更低。

如果您需要该模型,因为您在afterSave()或其他地方有其他逻辑或者已经加载了模型,因为您从它们中重新获取了ID,那么最好通过沿着imho的模特。这些是php对象,并且总是通过引用传递,因此它们不会消耗额外的内存。

另一件事是,有时在模型数组的循环中创建$model->save()比手动设置更复杂的sql查询更容易。另外,你会放松模型事件,这可能也是一个问题。