Страница 1 из 1
Где выбрасывать исключение?
Добавлено: 2020.04.30, 10:24
user
В модели или контроллере?
Например, я делаю выборку данных из таблицы с помощью AR
Если данных нет выбрасываю исключение NotFounException()
Где проверку делать сразу в модели и вернуть результат в контроллере, а он сам уже разруливает?
Re: Где выбрасывать исключение?
Добавлено: 2020.04.30, 21:59
ElisDN
Из модели вернуть null или выбросить NotFoundException.
А в контроллере преобразовать в NotFoundHttpException.
Re: Где выбрасывать исключение?
Добавлено: 2020.04.30, 22:14
user
ElisDN писал(а): ↑2020.04.30, 21:59
Из модели вернуть null или выбросить NotFoundException.
А в контроллере преобразовать в NotFoundHttpException.
тогда такой вопрос, если я делаю return тернарным оператором, то тут как?
return $data = $model ? : тут исключение
throw new NotFoundHttpException не стработает, а если new NotFoundHttpException будет не нужный мне ответ и код 200 будет
Re: Где выбрасывать исключение?
Добавлено: 2020.04.30, 22:18
samdark
Не делайте тернарный оператор.
Re: Где выбрасывать исключение?
Добавлено: 2020.04.30, 22:22
ElisDN
Пока тернарником никак:
Код: Выделить всё
if (!$model = Model::findOne($id)) {
throw new NotFoundException('User not found.');
}
return $user;
Но в PHP 8
будет можно.
Re: Где выбрасывать исключение?
Добавлено: 2020.05.01, 01:18
user
samdark писал(а): ↑2020.04.30, 22:18
Не делайте тернарный оператор.
почему?
Re: Где выбрасывать исключение?
Добавлено: 2020.05.01, 12:35
samdark
Потому что до PHP 8 выражения в нём не работают.
Re: Где выбрасывать исключение?
Добавлено: 2020.05.01, 17:55
user
Спасибо вам за пояснение!
Re: Где выбрасывать исключение?
Добавлено: 2020.05.15, 16:38
user
samdark писал(а): ↑2020.05.01, 12:35
Потому что до PHP 8 выражения в нём не работают.
получается, что yii2 не будет работать на 8-й версии
Re: Где выбрасывать исключение?
Добавлено: 2020.05.15, 18:46
samdark
Посмотрим. Надо в тесты добавить да прогнать...
Re: Где выбрасывать исключение?
Добавлено: 2020.05.15, 21:02
user
samdark писал(а): ↑2020.05.15, 18:46
Посмотрим. Надо в тесты добавить да прогнать...
там даже в конфигурационных файлах используется тернарный оператор
Код: Выделить всё
'log' => [
'traceLevel' => YII_DEBUG ? 3 : 0,
'targets' => [
[
'class' => 'yii\log\FileTarget',
'levels' => ['error', 'warning'],
],
],
],
может ишака создать?
Re: Где выбрасывать исключение?
Добавлено: 2020.05.16, 09:02
ElisDN
user писал(а): ↑2020.05.15, 21:02там даже в конфигурационных файлах используется тернарный оператор
Не используйте пока тернарный оператор именно для throw exception. Остальные используйте.