可能な限りテスト可能なコードを作成しようとしています。つまり、依存関係注入を正しく使用することを意味します。依存関係注入のコンストラクタでサービスとリーフオブジェクトを混在させるか?
私は、そのオブジェクトmeets certain criteriaの場合、new()を使ってオブジェクトをインスタンス化しても構いません。注目すべきは、コンストラクタで "新しくできない"ものを受け入れるべきではないということです。私のDIコンテナは、前もって「サインアップ」フォームを作成する方法を知っているだろう方法はありませんので
は例えば、私は
new Form('signup');
を行くことができるはずです。
私はこの仕事にほとんどの時間を作ることができますが、今はフォームのように、サードパーティ製のバリデータを使用して、自分自身を検証できるようにしたいと思います:
$form->validate()->isValid();
...ということを意味しています私はバリデーターサービスを渡す必要があります。
ほとんどの場合、フォームが検証される必要があるため、バリデーターを別に用意しなければならないので、バリデーターはすでに含まれています。
は、それが行うには、この例では、大丈夫です:
new Form(Validator $validator,$name);