Отдельно проверять наличие нет смысла. Если уж валидировать, то нормально, каждое поле, на соответствие ожидаемому формату. Ну и заодно и наличие.
А скопом если проверять, то скорее на наличие
лишних полей.
Плюс никаких исключений. Странно, что я не обратил на это внимание
в прошлый раз, там этот говнокод с try catch просто везде. Самому не надоедает всё время писать эти тру, кетч, ретурн для каждого запроса? И с какой стати пользователь API должен читать, что в БД нету например нужной таблицы? Это ВНУТРЕННЯЯ информация, которая не должна утекать наружу
Как вариант, метод validate должен возвращать массив с ошибками.
Если массив пустой, то используем данные
Если не пустой - возвращаем их пользователю.