При проверке сущности домена, лучше ли проверять значения, как они установлены, или все сразу с помощью валидатора (такого как в Symfony2) позже?
Например:
Вариант 1. Подтвердить, пока настроено
public function setEmail($email)
{
if(!filter_var($email, FILTER_VALIDATE_EMAIL)) {
throw new EntityException('The specified email address ' . $email . ' is invalid.');
}
$this->_email = $email;
return $this;
}
Вариант 2. Подтвердить позже ...
$user = new UserEntity();
$user->setEmail('johnnie@duh.com');
$validator = new Validator();
$validator->validate($user);
Вариант 3. Оба из вышеперечисленных (хотя кажется немного избыточным и не стоит накладных расходов).
Я знаю, что первый, вероятно, предназначен для более герметичных объектов, а второй - для более удобной обработки ошибок.
Кроме того, второй вариант кажется более простым в настройке и обслуживании ... так как мне не нужно настраивать сеттеры, и я могу централизовать свою логику проверки для одного класса.
Что сводится к ...
В общем, звучит так, как будто я хочу ХОРОШИЙ вариант 2, но чувствую, что жертвовать воздухонепроницаемостью сущности (например, если я забуду запустить сущность через валидатор), может быть глупо.