1 回答

TA貢獻1835條經(jīng)驗 獲得超7個贊
什么是什么
首先,我想對您使用的術(shù)語進行解釋。
DTO(數(shù)據(jù)傳輸對象)
通常是具有公共屬性的 PHP 類
只負(fù)責(zé)承載數(shù)據(jù)
不不驗證數(shù)據(jù)
不知道任何特定于實現(xiàn)的事情(例如它綁定到哪個 ORM)
通常用于在應(yīng)用程序的各個部分之間傳遞數(shù)據(jù),而任何一部分都不知道另一部分的實現(xiàn)
領(lǐng)域模型
通常是具有私有屬性的 PHP 類
應(yīng)該只包含有效數(shù)據(jù)
驗證任何更改都會導(dǎo)致有效狀態(tài)
不知道任何特定于實現(xiàn)的事情(例如它綁定到哪個 ORM)
資料庫
只負(fù)責(zé)存儲和檢索數(shù)據(jù)
知道它的實現(xiàn)(例如它綁定到哪個 ORM)
不負(fù)責(zé)返回有效數(shù)據(jù)
這對您的情況意味著什么
答案實際上取決于您在分擔(dān)責(zé)任方面的想法有多純粹。
如果您與純粹主義者交談,他們會說 Eloquent 模型不是 DTO,它們也不是域模型。存儲庫將返回一個雄辯的模型,該模型將映射到域模型。然后可以修改該域模型或?qū)⑵滢D(zhuǎn)換為可用于讀取數(shù)據(jù)的 DTO。在這種情況下,職責(zé)以擁有更多代碼為代價被分離。
如果您與實用主義者交談,他們會說 Eloquent 模型是 DTO 和域模型(有時甚至是存儲庫)。由于 Eloquent 模型負(fù)責(zé)存儲數(shù)據(jù)、檢索數(shù)據(jù)、修改數(shù)據(jù)并將此數(shù)據(jù)傳遞給應(yīng)用程序的其他部分。
最后,一切都與偏好有關(guān)。你可以純粹,你可以務(wù)實,你甚至可以在兩者之間做出選擇。這完全取決于你是一個多么先進的編碼器,項目有多大,它應(yīng)該如何維護,必須進行多快的更改等。
時間差
存儲庫可以返回 DTO 或域模型,具體取決于您在分離職責(zé)方面的想法。
- 1 回答
- 0 關(guān)注
- 123 瀏覽
添加回答
舉報