2016-10-13 5 views
2

I六角形アーキテクチャに従う書き込みシステム。私はどのようなオブジェクトを持っているべきですか?

私は、UseCaseで分割された非同期コマンドと同期クエリオブジェクトを持っています。

マイsrcフォルダは、次のようになります。私の質問がある

-src 
--Entity 
---Task.php 
--UseCase 
---Command 
----CreateTask 
-----CreateTaskUseCase.php 
-----CreateTaskCommand.php 

:私は/そのでしょうUseCase\Command\CreateTask\Request\Taskを作成UseCase\Command\CreateTask\CreateTaskCommand

  • \Entity\Task
  • のコンストラクタでコマンドを介してデータを送信するために使用する必要がありますすることができますどのようなすべての必要なデータがあります
  • 文字列/ int/float

これは問題を示す簡単な例です。

今私は、実際の状況では、ドメイン( Entiti\Taskなど) からオブジェクトを使用しています

は、私は、[NODE_IDを

  • UUID
  • インスタンス[ID、名]
  • 出典を必要とするUseCase\Command\CreateProcessを持っていますNODE_NAME、leaf_id、leaf_name]
  • リソース]
[ID、名前、タイプ等正常タイプ人[名は、LASTNAME]を

DDDに従うことで、プロセスは私の集約です。すべてのエンティティは、構成プロセス(ノード、リーフ、リソース、人)のみによって存在します。それから、私は別の方法を望んでいない、他のエンティティを作成する方法は、私のビジネスロジックを動作させるためです。

この問題のため、問題は次のとおりです。選択すべきは何ですか?いくつかのルールを破る?

問題:ドメイン内からのオブジェクトと

  • bindコマンド、コアに、より上位の層に結合するであろう。唯一の標準タイプ(整数、文字列などを使用してユニットテストなど
  • - コアの変化は、チェーンは、すべての層
  • クラスのたくさん私を作るが、使用するコマンドの明確な方法、および大いに多くの仕事Request\*を作成すると反応します)20個の引数で__counstructを作成します。私は、このコマンドを使用することは明らかではないので、マルチレベル配列を必要としません。

ありがとうございました。

+1

Dddは主にあなたのビジネスが歩き回る旅と構造についてです。私は彼らがユースケース/プロセス/タスク構造につ​​いて話しているのではないかと思っています。また、値型を調べてください。バンドルの引数 – Batavia

+1

あなたは正しいです、DDDタグを削除します:) – timiTao

+0

あなたの答えにあなたの質問に同じテキストを追加したので、あなたの編集をロールバックします。 – kayess

答えて

1

時間がたつと経験 - ベストオプションは、PHPの標準データを使用することです。最終的には、そのコマンド(2番目のオプション)のオブジェクトを作成すると良いですが、これはクラスとテストを作成する時間を消費します。

ドメインから何かを使用しないでください。これは将来大きな欠点です。

関連する問題