рефакторинг — PHP способ обработки нескольких ключей массива для выполнения одной и той же функции

У меня есть переменная, которая состоит из 2 массивов: old а также new, Так как мне нужно манипулировать обоими одинаково, я обнаружил, что я дублирую большинство строк с небольшими изменениями.

Чтобы дать вам представление, вот несколько разделов кода:

$old = json_decode($item['old']);
$new = json_decode($item['new']);

...

$diff['old'] = array_map($combineCallback, $bypassDiff ? $oldValues : array_diff($oldValues, $newValues));
$diff['new'] = array_map($combineCallback, $bypassDiff ? $newValues : array_diff($newValues, $oldValues));

...

if($keys == array('id')){
$item['old'] = array_map($combineCallback, $old);
$item['new'] = array_map($combineCallback, $new);
}

...

$items['old'] = $excludeCallback($items['old']);
$items['new'] = $excludeCallback($items['new']);

Я долго разбирался в этом, и это действительно имеет смысл оставить так, потому что я думаю, что это читабельно, но это как-то раздражает меня из-за того, что я делаю любые виды дублирования. Есть ли способ сделать это таким образом, чтобы избежать дублирования, используя что-то вроде этого:

public $keys = ['new', 'value'];

public function call(&$item, $callback)
{
foreach ($this->keys as $key) {
$callback($item[$key]);
}
}

Я, однако, не уверен, что это на самом деле увеличит читабельность кода и сделает прямо противоположное?

0

Решение

Задача ещё не решена.

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

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

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