@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. Если нужно произвести ленивое вычисление.

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

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

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