大きな(問題はありますが)問題がある可能性があります。コード内の構造体は、複数のレイヤー境界を越えてはいけません。
いくつかの構造体(配列かオブジェクトかどうかは関係ありません)が2つの層を超えている場合、意図的な妥協でない限り、脆弱性を示す「アーキテクチャ上の欠陥」あなたのコードベースの。このようなクロスカッティングのデータ構造は、コードベースが些細なバグを呈する魔女の間のフォールトラインになります。
3つ以上のレイヤー境界をまたいだ構造体がある場合、コードベースは犯されます。それはの1つになり、 "卵を産む前に火で殺す"プロジェクト。私が使用
解決策はこれです:
代わりに周りに渡される「データ構造」を捧げたの、domain objectsの周りにあなたのビジネスロジックを集中します。レイヤーのあるポイントでそれを作成します。そこでは実際にロジック関連のビヘイビアを使用してそれを挿入したり、それを他のレイヤーに戻したりするだけです。
ちょっと、次のように:
public function loginWithPassword(Entity\EmailIdentity $identity, string $password): Entity\CookieIdentity
{
if ($identity->matchPassword($password) === false) {
throw new PasswordMismatch;
}
$identity->setPassword($password);
$this->updateEmailIdentityOnUse($identity);
$cookie = $this->createCookieIdentity($identity);
return $cookie;
}
何この方法のうちに渡されていることは、特定の、ビジネス関連の動作が含まれているいくつかの「データ構造」が、完全に形成された論理エンティティ、ではありません。
_「どこかのフォルダにオブジェクトがたくさん集まっています」_ - ファイルとして保存していますか?どのようにそれらを渡す必要がありますあなたのアプリケーションに依存し、私たちは何も知らない。一般的には、配列上でオブジェクト(Valueオブジェクトと呼ばれる)を渡すことをお勧めします。なぜなら、利用可能なプロパティを定義できるからです。 –
これは私が今まで読んだことのない漠然とした質問です。実際の状況をご記入ください。 – jonrsharpe
Magnusに感謝します。それはまさに私が探していたものです。値オブジェクト。だから、どこにこれらを保管していますか?どのようにそれらを使用する上でのベストプラクティスのためのreccomendations? –