我有一个由两个数组组成的变量:
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]);
}
}
但是,我不确定这是否真的会增加代码的可读性,并做完全相反的事情?