Можно ли использовать крышки для инкапсуляции?

Я использовал такой код:

$a = [];
$a['a'] = 1;
$text1 = [];
foreach ($b as $item)
{
$text1[] = $item['1'];
}
$a['text1'] = implode(',', $text1);

$text2 = [];
foreach ($b as $item)
{
$text2[] = $item['2'];
}
$a['text2'] = implode(',', $text2);

мой коллега повторил это так:

$a = [];
$a['a'] = 1;
$a['text1'] = call_user_func(function() use ($b) {
$text1 = [];
foreach ($b as $item)
{
$text1[] = $item['1'];
}
return implode(',', $text1);
}();

$a['text2'] = call_user_func(function() use ($b) {
$text2 = [];
foreach ($b as $item)
{
$text2[] = $item['2'];
}
return implode(',', $text2);
}();

его причина: это увеличивает инкапсуляцию, и в моем первом примере будут переменные$text1, $text2) если я их не сбросил.

0

Решение

Да, я согласен с вашим коллегой — имеет смысл использовать замыкания для инкапсуляции кода.

Однако все, что у вас есть, можно упростить до этого:

<?php

$a = [
'a' => 1,
'text1' => implode(',', array_column($b, '1')),
'text2' => implode(',', array_column($b, '2')),
];

Для справки смотрите:

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector