Язык не важен, в моём случае это PHP!!!
Делаю всё без инкапсуляции!
Пусть есть некоторая
модель, которая взаимодействует с
БД (
save сохраняет в БД).
$user = new UserModel();
$user->email = 'vasya@mail.ru'; // email - верный
$user->password = '123'; // пароль - неверный, меньше 6-ти символов
$user->save(); // должна ли быть тут ошибка (wrong password)?
Должна?
Или мы в этом же месте должны проверять мейл и пароль на валидность.
Где это должно проверяться?Второй пример:
Пусть есть некоторый товар в магазине, у которого обязательно должно быть название, а остальные поля (цена, описание) могут отсутствовать.
$order = new Order();
$order->save(); // ошибка, $order->name = null - по умолчанию;
Должна ли модель бросать
исключение в этом случае? Или мы должны проверять перед сохранением?
Где это должно проверяться?И последний:
Пусть поле
price (цена) должно быть числом, а мы ставим строку (например)
$order = new Order();
$order->name = 'example order';
$order->price = 'error here!'; // не число!
Я вырос на "жёстко" типизированных языках (C#, Java), где мы вообще не сможем такое провернуть, но если это ЯП с динамической типизацией?
Просто модель точно знает про столбцы, какие из них
Nullable, и "рыгнуться". Но все пишут, что контроллеры должны проверять входные данные!