2011-02-16 65 views
2

我得到我的腳在OOP潮溼和有一個問題關於__construct()內容:對象構造和唯一ID

假設我想打一個PlayResult類,這將需要保護的IDDateWinner性能。這似乎是合乎邏輯的東西放在__construct()方法中,但ID是MySQL首次將播放結果添加到表時由MySQL生成的唯一自動遞增的ID。

現在ID對我的代碼非常重要,因爲這是我在編輯時如何跟蹤單個記錄。但是,當用戶使用HTML表單提交新的播放結果時,顯然沒有ID值,因爲結果尚未進入數據庫。

那麼,該ID是否應該在構造函數中?或者我應該只用日期和贏家構建,然後設置ID,如果我有一個?

感謝:-)

回答

1

保存在數據庫中的對象是不是對象的責任(除非它是一個ActiveRecord),但持久層的一類,例如一個Table Data Gateway的。因此,PlayResult類應該不必擔心被設置的ID,並且是可選字段。

如果您希望在對象中需要ID,您必須檢查它是否存在於數據庫中(參見RepositoryIdentity Field)。如果沒有,則首先在數據庫中創建新記錄,然後用新創建的ID創建PlayResult的對象實例。

+1

我很高興我問,這似乎比我想象的更復雜!如果我有任何問題,我會通讀您提供的鏈接並通知您。 – Drew 2011-02-16 22:02:56