@serikd

Считается ли плохой практикой выражения в значениях массива?

Как предпочтительней писать?
$value = Class::do($data);
$arr = ['key' => $value];
//vs
$arr = ['key' => Class::do($data)];
//vs
$arr = ['key' => function() {
    return Class::do($data);
}];


И что можно почитать, типа лучшие практики или что то в этом роде, чтобы не возникало подобных вопросов.
Или только github? )
  • Вопрос задан
  • 164 просмотра
Решения вопроса 1
muhammad_97
@muhammad_97
PHP-разработчик
Первое. Просто потому, что такой код легче читается. Третий пример некорректен, т.к. массив будет содержать замыкание, а не результат функции.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
@SergeyZelensky-Rostov
$arr['key'] = Class::do($data);
Ответ написан
Комментировать
@karminski
Senior React.JS Developer
Если значение $value нигде больше не будет использоваться, то нормален второй вариант. Третий вариант не работает, т.к. $data внутри Closure не объявлено. Вероятно нужно было написать так:
$arr = ['key' => function($data) {
    return Class::do($data);
}];
Ответ написан
Marcuzy
@Marcuzy
php разработчик
По-моему, все варианты приемлемы, но каждый по ситуации:
  1. Если выражение длинное и сложное
  2. Выражение короткое и простое
  3. Если нужно произвести ленивое вычисление.

Также важно наличие других ключей.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы