Давайте представим, что мы говорим о HTML-форме жалобы, одним из полей которой является список продуктов из каталога компании.
Я понимаю, что проверка обычно (всегда?) Идет в своем собственном классе.
Я также понимаю, что хорошей практикой является наличие классов шлюзов, которые могут обрабатывать все запросы к базе данных внутренне, поэтому, когда я сохраняю свою жалобу из формы жалобы, мне не нужно беспокоиться о деталях базы данных.
Но как насчет проверки, которая требует доступа к базе данных - например, проверка того, что продукт на самом деле является продуктом, который у нас есть (а не кто-то подделывает форму). Это можно сделать только путем поиска соответствия в базе данных ... но моя база данных абстрагируется от моего шлюза.
Добавлять ли логику проверки в мой шлюз? Я создаю классы шлюза валидатора? Наделить ли мой валидатор логикой базы данных?
РЕДАКТИРОВАТЬ - попытаться уточнить ...
- клиент нажимает ссылку на форму жалобы
- Форма жалобы HTML построена из выпадающего списка
<select><item></item></select>
с продуктами X из нашего вымышленного каталога компании
- Клиент заполняет форму и отправляет // Wiseguy изменяет HTML, поэтому продукт представляет собой "Шведские шарики" и отправляет
- Класс формы проверяет простые вещи, такие как дата, все необходимые поля имеют данные, адрес электронной почты и т. Д.
на шаге 4, чтобы проверить, является ли продукт, на который вы жалуетесь, законным, вам нужно нажать на таблицу продуктов базы данных, чтобы убедиться, что это все еще действительный пункт данных. Эта логика должна идти в классе формы, классе шлюза или где-то еще? если поместить его в форму класса, это порождает зависимости, не так ли?