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

У меня есть переменная, которая состоит из 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]);
    }
}

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

...