Я хочу обратить внимание, что я говорил про обращение к query services.Указывать таблицу, где хранятся сущности в правиле валидации?
'user_exists' => function (int $id) {
try {
$this->userQueryService->find($id);
return true;
} catch (UserDoesNotExist $e) {
return false;
}
},
Можно отвлечься от синтаксиса Ларавель и посмотреть с такой стороны: есть целостный набор данных - ввод, и есть вычисления, которые надо с ними провести - то есть, объект с методами. Инкапсуляция.валидация должна только в своем спектре обязанностей. просто провалидировать, что юзер правильно заполнил форму.
Ты ошибаешься в том, что считаешь эти «вычисления» одними и теми же.Можно отвлечься от синтаксиса Ларавель и посмотреть с такой стороны: есть целостный набор данных - ввод, и есть вычисления, которые надо с ними провести - то есть, объект с методами. Инкапсуляция.
Размазывать однородные вычисления над одним набором данных по разным участкам кода - нарушение инкапсуляции.
так - форма проверяет что сумма перевода меньше чем денег на счете.Размазывать однородные вычисления над одним набором данных по разным участкам приложения - нарушение инкапсуляции.
да, это валидация с учетом бизнес-логики: проверка аутентифицированности, наличия счета, состояния счета, значения МФО банка получателятак - форма проверяет что сумма перевода меньше чем денег на счете.
Логика формы может быть связана с бизнес-логикой, но я предпочитаю это называть отражением бизнес-логики.Какая у формы может быть собственная логика, не связанная с бизнес-логикой?
Да, логика отображения и валидация на клиенте не имеет никакого отношения к валидации данных в PHP-приложении на сервере, и в контексте php я это не рассматриваю.Чтобы добиться максимального удобства в виде мгновенной валидации каких-то штук прямо на клиенте, а также для различных дизайнерских штук, форма наполняется своей собственной логикой, которая может отражать бизнес-логику.
Помимо этого, форма может по-разному выглядеть в зависимости от специфики клиента, партнерских соглашений с владельцем клиента и т.д. Но вполне вероятно, что подобные вещи не будут никак влиять на тот домен, сущности которого мы собираемся менять, т.е. там тупо не будет такой бизнес-логики, это логика из других контекстов.
Это не имеет значения, т.к. тоже самое можно сказать и про серверную валидацию формы.Да, логика отображения и валидация на клиенте не имеет никакого отношения к валидации данных в PHP-приложении на сервере, и в контексте php я это не рассматриваю.
Я писал WPF приложения в C#. Вот только на форму там биндят специальные ViewModel. И прямого отношения к модели они не имеют. Они вообще из UI слоя.да, я нормально отношусь к парадигме data binding.