У меня есть переменная, которая состоит из 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]);
}
}
Я, однако, не уверен, что это на самом деле повысит читабельность кода и сделает прямо противоположное?