したがって、データを含む文字列を保持できるオブジェクトがあります。オブジェクトまたは文字列を検証する必要がありますが、コンストラクタではなくメソッドに渡す理由がわかりません。渡す必要がある場合があります。メソッドではなくコンストラクターですか、それともコンストラクターではなくメソッドを使用しますか?
これはPHPコードです。
したがって、データを含む文字列を保持できるオブジェクトがあります。オブジェクトまたは文字列を検証する必要がありますが、コンストラクタではなくメソッドに渡す理由がわかりません。渡す必要がある場合があります。メソッドではなくコンストラクターですか、それともコンストラクターではなくメソッドを使用しますか?
これはPHPコードです。
コンストラクターもメソッドの違いはその使用法だけです。一部のクラスのオブジェクトの作成時に行う必要があることがいくつかあります。そのために、オブジェクト/設定引数をコンストラクターに渡し、そのクラスのコンテキストで一部のデータを処理する必要がある場合は、メソッドを使用します。これは、「メソッドとコンストラクターの使用方法の違い」について質問したかったことだと思います。コーディングの問題がある場合は、シナリオを教えてください。
オブジェクトコンストラクターを介して引数を渡すことには、わずか1つの利点しかありません。それは、セッターを直接呼び出す余分なステップを削除していることです。
$foo = new Foo($dbo);
// Same thing as
$foo = new Foo();
$foo->setDbo($dbo);
個人的には、セッターをコンストラクターに渡すよりも、セッターを明示的に呼び出す方が好きです。これは、15 個の署名引数を使用したくないためです。また、呼び出し元のコードがオブジェクトをどのように使用しているかを確認できます。
時々、関連するオブジェクトを準備するためにコンストラクターを使用しますが、引数を渡すためには決して使用しません。
オブジェクトを後で 1 つ以上のメソッドで使用するためにオブジェクトに保存する必要がある場合は、オブジェクトをコンストラクターに渡します。次に、それまたはそのコピーをメンバー変数に割り当てると、オブジェクトの「状態」の一部になります。
渡されるオブジェクトが一時的で、メソッドの有効期間のみ必要な場合は、それを引数としてメソッドに渡すことができます。