我正在使用ORM重新建模現有應用程序,並試圖儘可能遵守DDD。使用原則的DDD
工單是AR,有十幾個子實體。我打算建模這個類如下:
class WorkOrder {
private $number = 0;
private $manual = '';
...
// Sub-Entities
private $consumables; // Collection (1:m)
private $dimensions; // Collection (1:m)
private $sequences; // Collection (1:m)
...
}
現在我需要一個存儲庫來加載(並堅持?)這個聚合根 - 正確嗎?
回購將返回一個或多個聚合,當我訪問子實體(通過間接的getter/setters - 不是點符號)將延遲加載我後的信息?
我將有另一個類作爲一個工廠,用於創建工單 - 這是一個具體工作過程,包括大量的業務邏輯/驗證規則...
但如果工廠創建工作訂單合計不回購剛剛堅持AR?
該工廠將不得不查詢第三方服務(通過REST或其他方式),並基本上構建一個描述工作範圍的批准文檔的快照。
因此,存儲庫封裝了ORM或我應該選擇的永久持久層?
現在我的文件結構看起來是這樣的:
WorkOrder/
/Factory.php
/Aggregate.php
/Repository.php
/Entity/Header.php
/Entity/Shipping.php
/Entity/Warranty.php
/Entity/Certification.php
...
存儲庫將有這樣的方法:
FindOneByTrackingNumber()
FindAllByCriteria()
save($root);
我廠將有類似的方法:
createWorkOrderFromRpi()
createWorkOrderFromCsv()
...
我已閱讀了幾篇文章和無數帖子在這裏:
http://williamdurand.fr/2013/08/07/ddd-with-symfony2-folder-structure-and-code-first/
雖然細節是優秀的,我需要我自己的解釋第二個意見,謝謝。 :)
問候, 亞歷
我在這裏繞過這一點的房子 - > http://stackoverflow.com/questions/13894200/making-a-fat-model-in-symfony-2-composition-or-inheritance-and-how- to-configur我們剛剛開始使用DDD重新實現我們的SF2應用程序,所以感謝上面的鏈接! – calumbrodie