0

私はZendFrameworkでアプリケーションを開発しており、コントローラー、サービス、ドメインモデル、マッパーのレイヤーがあります。

私のドメインオブジェクトは、いくつかの異なる目的のために配列として表す必要があります。たとえば、マッパーはオブジェクトを永続化する前に配列に変換します。populate()フォームには、そのメソッドのパラメーターとして配列が必要です。他にもいくつか例があります。

だから、私の質問は、どのレイヤーで配列への変換を行うべきかということです。オブジェクトの変換は、使用されるコンテキストによってわずかに異なります。たとえば、オブジェクトIDは、新しいオブジェクトを永続化する場合は必要ありませんが、更新を永続化する場合やフォームに入力する場合は必要です。

私が見る限り、2つのオプションがあります。オプション1は、各コンポーネント(つまり、マッパー、フォームなど)で変換を実行することです。オプション2は、それをドメインオブジェクト自体に配置し、クライアントコードにパラメーターを渡させて、必要な配列バリエーションを決定することです。$array = $domObject->toArray('populateForm');

オプション1にはかなりの重複が含まれますが、関心の分離のルールに準拠しているようです。オプション2は重複を回避しますが、ドメインオブジェクトがさまざまな方法でそれ自体を表現することに関係する必要があるかどうかはわかりません。

おそらく、ドメインオブジェクトは「バニラ」配列を生成するだけでよく、各コンポーネントはそれを独自の用途に合わせて調整する必要がありますか?そしてもう一つのポイントはパターンに関係しています。デコレータまたは他のパターンを適用することを検討する必要がありますか?

あなたの考えは大歓迎です!

4

1 に答える 1

1

これについての私の考えは最初です、あなたはこれを正しい方法でやっていると思いますか? プロジェクトに関する実際の知識がないと、かなり複雑に聞こえます。Zend に非常に慣れていない人が、それが不要であることに気付くために行う典型的な解決策を実行しようとしているように感じます。繰り返しますが、私はあなたのプロジェクトについてあまり知りません。

第二に、おそらくそのような機能をサービス層に配置します。私にとってのサービス層は、ほとんど常にオブジェクトの操作に関するものでした。

于 2012-09-20T06:24:18.990 に答える