私は PHP を使い始めたばかりなので、ひどく間違ったことをしている場合は、私のコードを許してください。
「保険」オブジェクトに対して私が持っているこのメソッドを見てみましょう。これは、保険を言ったすべてのクライアントを返します。
public function getBeneficiarios() {
$petitionsVariables = array(
PeticionDeCoberturaColumns::COBERTURA_ID => $this->getId()
);
$petitions = (new PeticionDeCoberturaDAO())->getByValues($petitionesVariables);
$clientes = array();
foreach ($petitions as $petition) {
$clientes[] = $petition->getClient();
}
return $clientes;
}
上記のコードは、特定の DAO に結合されているため、明らかにあまりテストできません。適切にテストするには、DAO をモックして、モックを注入する必要があります。
それを行う依存性注入の方法は
public function getBeneficiarios($dao) {
$petitionsVariables = array(
PeticionDeCoberturaColumns::COBERTURA_ID => $this->getId()
);
$petitions = $dao->getByValues($petitionesVariables);
$clientes = array();
foreach ($petitions as $petition) {
$clientes[] = $petition->getClient();
}
return $clientes;
}
保険オブジェクト コンストラクターに DAO を挿入することもできますが、単一のメソッドで使用する必要があるという理由だけで、関連のない DAO を渡すという考えは好きではありません。
getBeneficiarios メソッドを使用するたびに、最初に DAO を作成する必要がありますが、非常に直感に反するように思えます。将来のコーダーは、それについて気にする必要はありません。
快適に使用できるコードと快適にテストできるコードの両方を維持するにはどうすればよいでしょうか?