我在OOP中弄湿了并且对__construct()
内容有疑问:
假设我要创建一个PlayResult
类,该类将采用受保护的ID
,Date
和Winner
属性。这似乎是放在__construct()
方法中的逻辑事物,但ID
是MySQL在第一次将播放结果添加到表时生成的唯一自动递增ID。 p>
现在ID对我的代码非常重要,因为这是我在编辑时跟踪各个记录的方式。但是,显然当用户使用HTML表单提交新的播放结果时,没有ID值,因为结果尚未进入数据库。
那么,ID是否应该在构造函数中?或者我应该仅使用日期和获胜者构建,然后设置ID,如果我有一个?
谢谢: - )
答案 0 :(得分:1)
将对象保存在数据库中不是对象的责任(除非它是ActiveRecord),而是持久层上的类,例如Table Data Gateway。因此,PlayResult类不必担心被设置的ID,也不是可选字段。
如果您希望对象中需要ID,则必须检查数据库中是否存在该ID(参见Repository或Identity Field)。如果没有,首先在数据库中创建新记录,然后使用新创建的ID创建PlayResult的对象实例。