2011-04-24 32 views
4

我正在閱讀Doctrine 2,並且我遇到了這個帖子http://groups.google.com/group/doctrine-dev/browse_thread/thread/3b21fcea5a408aae,其中用戶想用自定義集合來擴展PersistantCollection類。在這裏面,另一用戶響應,學說2讓我質疑收藏的目的,一般來說收藏中有什麼樣的方法?

集合是集合,他們持有的元素,並
在它們之間迭代的手段或做其它典型收集的東西(計數,過濾
項目,添加項目,刪除項目。 ..),始終不關心物品(產品,物品或其他)的確切性質。
集合上的getTotalPrice或getTotalWeight完全是
錯位和擴展集合類在大多數
情況下類似的壞主意。它違背了許多指導方針,單一責任
原則就是其中之一。將您的業務邏輯放在您自己的域上,而不是集合上。集合是
只是通用的數據容器。

我的問題是,如果我想對一些書對象做一些事情,比如將它們分類並計算每個類別的數量,那麼在集合類中創建一個方法是不正確的這個?或者我應該在實體中創建一個靜態函數來對集合進行排序?我只是不確定我會把這種類型的功能放在哪裏....感謝您提前花時間閱讀本文。乾杯!

回答

2

不,我強烈建議不要自定義集合。接口提供了一個完整的公共API來操縱集合,消除了對集合進行子類化的需要。

在你的Category你可以寫一個方法來排序$books集合。 ...並可能將其掛接到PostLoad事件中。 (爲什麼建議採用static方法?)