对象构造函数和唯一ID

时间:2011-02-16 13:16:58

标签: php mysql oop copy-constructor

我在OOP中弄湿了并且对__construct()内容有疑问:

假设我要创建一个PlayResult类,该类将采用受保护的IDDateWinner属性。这似乎是放在__construct()方法中的逻辑事物,但ID是MySQL在第一次将播放结果添加到表时生成的唯一自动递增ID。 p>

现在ID对我的代码非常重要,因为这是我在编辑时跟踪各个记录的方式。但是,显然当用户使用HTML表单提交新的播放结果时,没有ID值,因为结果尚未进入数据库。

那么,ID是否应该在构造函数中?或者我应该仅使用日期和获胜者构建,然后设置ID,如果我有一个?

谢谢: - )

1 个答案:

答案 0 :(得分:1)

将对象保存在数据库中不是对象的责任(除非它是ActiveRecord),而是持久层上的类,例如Table Data Gateway。因此,PlayResult类不必担心被设置的ID,也不是可选字段。

如果您希望对象中需要ID,则必须检查数据库中是否存在该ID(参见RepositoryIdentity Field)。如果没有,首先在数据库中创建新记录,然后使用新创建的ID创建PlayResult的对象实例。