Предположим, у меня есть класс Thing, и мне нужно использовать определенную проверку даты, предоставляемую классом MySpecificDateValidation, который расширяет Zend_Validate_Abstract.setter, validator и dependency injection
В классе 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
, но, с другой стороны, если у меня есть дюжина атрибутов с полдюжинами разных валидаторов, это (переход к созданию) принесет дополнительный вес в конструкторе, не так ли? –
@RodrigoAoCubo, если ваш класс имеет столько зависимостей, которые ему нужны для повторного факторинга, он делает слишком много! Сказав, что, когда вы передаете свои зависимости, зависит от вашего варианта использования. – vascowhite