我正在Zend Framework中開發一個應用程序,並具有以下層:控制器,服務,域模型和映射器。把php objectToArray邏輯放在哪裏?哪一層?
我的域對象需要被表示爲用於幾個不同的目的陣列。例如,映射器在持久化之前將對象轉換爲數組;該表單需要一個數組作爲其populate()
方法的參數;還有其他一些例子。
所以,我的問題是,在什麼層我應該做翻譯,以一個數組?對象的平移根據其使用的上下文而略有不同,例如,在持久化新對象時不需要對象ID,但在持續更新或填充表單時需要此對象ID。
據我所見,有兩種選擇。選項1是在每個組件(即映射器,表單等)中進行翻譯。選項2將其放入域對象本身,並讓客戶端代碼傳遞一個參數以確定它們需要的陣列變體,例如, $array = $domObject->toArray('populateForm');
選項1將涉及重複了相當數量,但似乎堅持關注規則的分離。選項2將避免重複,但我不確定我的域對象應該關心以各種不同的方式表示自己。
或許域對象應該只產生一個「香草」陣列,並且每個組件應該調整供自己使用?另一點與模式有關。我應該尋找應用裝飾或其他模式?
您的想法非常感謝!