比方說,我有一個類的東西,我需要使用由擴展Zend_Validate_Abstract來MySpecificDateValidation類提供一些具體的日期驗證。二傳手,驗證和依賴注入
在Thing類,我在想依賴注入,不知道如果這個代碼:
public function SetDateBegin($dateBegin) {
$dateValidator = new MySpecificDateValidation();
if ($dateValidator->isValid($dateBegin)) {
$this->dateBegin = $dateBegin;
} else {
throw new Exception /*...*/;
}
}
應重構爲:
public function SetDateBegin($dateBegin, MySpecificDateValidation $dateValidator) {
if ($dateValidator->isValid($dateBegin)) {
$this->dateBegin = $dateBegin;
} else {
throw new Exception /*...*/;
}
}
或有類似的幾個依賴你可以住在一起嗎?
可能更好地驗證器傳遞到創作上,而不是到每個函數的對象。除非你有一個令人信服的理由來避免額外的行李,否則如果SetDateBegin從不被調用,代碼會少得多。 – DampeS8N
但是,在另一方面,如果我有半打不同的驗證十幾atributes,這(通過在創建)將在構造函數中帶來額外的重量,不是嗎? –
@RodrigoAoCubo如果你的類有那麼多的依賴,它需要重新分解,它太多了!話雖如此,你傳遞依賴的地方取決於你的用例。 – vascowhite