@Alex657913

Как подружить валидацию в yii2 и type hint's в php7?

Столкнулся в проекте (рест апи) на yii2 с интересной ситуацией. Есть модель (отнаследована от Model), в модели переопределенны методы сеттеры, эти методы написаны с тайп хинтами.
Модель по идее должна валидировать данные, т.е. то что прилетает с запроса. Теперь отправляем запрос с некорректными параметрами (там где сеттер ждет инт, получает строку), естественно получаем эксепшен на сеттере (тайп хинт). Т.е. атрибуты даже не могут присвоится, ни то чтобы провалидироваться. Как решить загадку в yii2? Условие задачи - тайп хинты(сеттеры) в моделе трогать нельзя. Оборачивать вызывающий код в трай-кетч с ловлей эксепшена типа TypeError тоже нельзя (ибо не эстетично как бы). Какие есть еще варианты?
  • Вопрос задан
  • 64 просмотра
Решения вопроса 1
myks92
@myks92 Куратор тега Yii
Нашёл решение — пометь вопрос ответом!
Строгая типизация хорошее дело. Её можно отключить, но это не имеет смысла. Подробнее.

Поэтому, вам придётся идти по другому пути - преобразовывать данные в соотвествующие типы. Например, если прилетает строка, а нужен int, то вам нужно преобразовать в int. Либо можно api заставить присылать данные соответствующего типа и показывать эти ошибки типов.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы