PHP コードの問題を解決しようとしていますが、これは他のコードでも解決できていないものでもあります。
1 つだけのコレクションに属さなければならないオブジェクトがあります。そして、主にコレクションの観点からこれらのオブジェクトにアクセスします。他のコードは、コレクションを経由せずにオブジェクトを見つけることは期待されません。
したがって、私が過去にこれを処理した方法は、オブジェクトにコレクションへの参照を与えることでした。このようにして、オブジェクトが 1 つのコレクションにのみ属することができることを満足させようとします。次に、オブジェクトをコレクションに追加します。
public function __construct(Collection $c)
{
$this->setCollection($c);
}
public setCollection(Collection $c)
{
$this->collection = $c;
$c->addObject($this);
}
これは「Don't Repeat Yourself」と明らかに矛盾しています。そして、オブジェクトのコレクションに簡単にアクセスする必要があることと、オブジェクトが 1 つのコレクションにのみ属していることを必要とすることの要件が互いに矛盾するために発生します。オブジェクトはコレクション内にあることを認識し、コレクションはオブジェクトがコレクション内にあることを認識します。どちらかが同期しなくなると、システムが壊れます。
そして、あるコレクションから別のコレクションにオブジェクトを移動するコードを作成しようとすると、問題が明らかになります。または、オブジェクトを削除するとき。
では、この種の問題の解決策を見つけた人はいますか? 何か試してみるべきことがありますか?最終的には、多くの二重チェックで機能させることができますが、もっと良い方法が必要なようです.