Где выбрасывать исключение?
Где выбрасывать исключение?
В модели или контроллере?
Например, я делаю выборку данных из таблицы с помощью AR
Если данных нет выбрасываю исключение NotFounException()
Где проверку делать сразу в модели и вернуть результат в контроллере, а он сам уже разруливает?
Например, я делаю выборку данных из таблицы с помощью AR
Если данных нет выбрасываю исключение NotFounException()
Где проверку делать сразу в модели и вернуть результат в контроллере, а он сам уже разруливает?
Re: Где выбрасывать исключение?
Из модели вернуть null или выбросить NotFoundException.
А в контроллере преобразовать в NotFoundHttpException.
А в контроллере преобразовать в NotFoundHttpException.
Re: Где выбрасывать исключение?
тогда такой вопрос, если я делаю return тернарным оператором, то тут как?
return $data = $model ? : тут исключение
throw new NotFoundHttpException не стработает, а если new NotFoundHttpException будет не нужный мне ответ и код 200 будет
- samdark
- Администратор
- Сообщения: 9489
- Зарегистрирован: 2009.04.02, 13:46
- Откуда: Воронеж
- Контактная информация:
Re: Где выбрасывать исключение?
Не делайте тернарный оператор.
Нравится Yii? Давайте сделаем его лучше!.
Re: Где выбрасывать исключение?
Пока тернарником никак:
Но в PHP 8 будет можно.
Код: Выделить всё
if (!$model = Model::findOne($id)) {
throw new NotFoundException('User not found.');
}
return $user;
- samdark
- Администратор
- Сообщения: 9489
- Зарегистрирован: 2009.04.02, 13:46
- Откуда: Воронеж
- Контактная информация:
Re: Где выбрасывать исключение?
Потому что до PHP 8 выражения в нём не работают.
Нравится Yii? Давайте сделаем его лучше!.
Re: Где выбрасывать исключение?
Спасибо вам за пояснение!
- samdark
- Администратор
- Сообщения: 9489
- Зарегистрирован: 2009.04.02, 13:46
- Откуда: Воронеж
- Контактная информация:
Re: Где выбрасывать исключение?
Посмотрим. Надо в тесты добавить да прогнать...
Нравится Yii? Давайте сделаем его лучше!.
Re: Где выбрасывать исключение?
там даже в конфигурационных файлах используется тернарный оператор
Код: Выделить всё
'log' => [
'traceLevel' => YII_DEBUG ? 3 : 0,
'targets' => [
[
'class' => 'yii\log\FileTarget',
'levels' => ['error', 'warning'],
],
],
],