Как читабильнее или правильнее писать тернарную операцию в return, если в двух случаях будут возвращены массивы?

1)
return (empty($error)) ?
			[	'data'    => $data,
				'status'  => 'success',
				'message' => 'Done'
			]
			:
			[	'data'    => $errors,
				'status'  => 'error',
				'message' => $message
			];


2)
return (empty($error)) ?[
	'data'    => $data,
	'status'  => 'success',
	'message' => 'Done'
] : [
	'data'    => $errors,
	'status'  => 'error',
	'message' => $message
];


или напишите свой вариант.
  • Вопрос задан
  • 189 просмотров
Пригласить эксперта
Ответы на вопрос 3
saboteur_kiev
@saboteur_kiev
software engineer
IMHO тернарный оператор полезен тогда, когда он пишется в одну строку.
В противном случае проще, полезнее и нагляднее использовать обычный if.
Ответ написан
Комментировать
27cm
@27cm
TODO: Написать статус
Как по мне, так самый читабельный и правильный вариант:
if (!empty($errors)) {
    return [	
        'data'    => $errors,
        'status'  => 'error',
        'message' => $message,
    ];
}
return [
    'data'    => $data,
    'status'  => 'success',
    'message' => 'Done',
];


Или вот так:
$status = 'success';
$message = 'Done';

// ...

if (!empty($errors)) {
    $data = $errors;
    $status = 'error';
}

return [
    'data'    => $data,
    'status'  => $status,
    'message' => $message,
];


Но ни один из ваших вариантов с ?: оператором в данном случае я бы не назвал читабильным.
Ответ написан
Комментировать
akubintsev
@akubintsev
Опытный backend разработчик
Вариантов много разных можно написать, но оба исходных как-то не очень читабельны. 27cm написал хорошие. Можно еще так сделать:
$response = [
  'data'    =>  $data,
  'status'  => 'success',
  'message' => 'Done'
];

if (!empty($error)) {
    // можно через array_merge еще написать
    $response = [
      'data'    =>  $errors,
      'status'  =>  'error',
      'message' => $message,
    ];
}
return $response;
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽