私はZendFrameworkでアプリケーションを開発しており、コントローラー、サービス、ドメインモデル、マッパーのレイヤーがあります。
私のドメインオブジェクトは、いくつかの異なる目的のために配列として表す必要があります。たとえば、マッパーはオブジェクトを永続化する前に配列に変換します。populate()
フォームには、そのメソッドのパラメーターとして配列が必要です。他にもいくつか例があります。
だから、私の質問は、どのレイヤーで配列への変換を行うべきかということです。オブジェクトの変換は、使用されるコンテキストによってわずかに異なります。たとえば、オブジェクトIDは、新しいオブジェクトを永続化する場合は必要ありませんが、更新を永続化する場合やフォームに入力する場合は必要です。
私が見る限り、2つのオプションがあります。オプション1は、各コンポーネント(つまり、マッパー、フォームなど)で変換を実行することです。オプション2は、それをドメインオブジェクト自体に配置し、クライアントコードにパラメーターを渡させて、必要な配列バリエーションを決定することです。$array = $domObject->toArray('populateForm');
オプション1にはかなりの重複が含まれますが、関心の分離のルールに準拠しているようです。オプション2は重複を回避しますが、ドメインオブジェクトがさまざまな方法でそれ自体を表現することに関係する必要があるかどうかはわかりません。
おそらく、ドメインオブジェクトは「バニラ」配列を生成するだけでよく、各コンポーネントはそれを独自の用途に合わせて調整する必要がありますか?そしてもう一つのポイントはパターンに関係しています。デコレータまたは他のパターンを適用することを検討する必要がありますか?
あなたの考えは大歓迎です!