| @@ 170-198 (lines=29) @@ | ||
| 167 | * @param mixed[] $before |
|
| 168 | * @param mixed[] $after |
|
| 169 | */ |
|
| 170 | private function diffRecursiveFromBeforeToAfter(RecordDiff $diff, $pathInArray, $before, $after) |
|
| 171 | { |
|
| 172 | if (! \is_array($before) && ! $before instanceof \Traversable) { |
|
| 173 | ||
| 174 | $beforeValue = $this->convertToString($before); |
|
| 175 | $afterValue = $this->convertToString($after); |
|
| 176 | ||
| 177 | if ($beforeValue !== $afterValue) { |
|
| 178 | $diff->addChange(new RecordDiffEntry($pathInArray, $beforeValue, $afterValue)); |
|
| 179 | } |
|
| 180 | } else { |
|
| 181 | ||
| 182 | foreach ($before as $key => $beforeValue) { |
|
| 183 | ||
| 184 | $afterValue = null; |
|
| 185 | ||
| 186 | if ((\is_array($after) || $after instanceof \ArrayAccess) && isset($after[$key])) { |
|
| 187 | $afterValue = $after[$key]; |
|
| 188 | } |
|
| 189 | ||
| 190 | $this->diffRecursiveFromBeforeToAfter( |
|
| 191 | $diff, |
|
| 192 | empty($pathInArray) ? $key : $pathInArray . '.' . $key, |
|
| 193 | $beforeValue, |
|
| 194 | $afterValue |
|
| 195 | ); |
|
| 196 | } |
|
| 197 | } |
|
| 198 | } |
|
| 199 | ||
| 200 | /** |
|
| 201 | * @param RecordDiff $diff |
|
| @@ 206-235 (lines=30) @@ | ||
| 203 | * @param array $before |
|
| 204 | * @param array $after |
|
| 205 | */ |
|
| 206 | private function diffRecursiveFromAfterToBefore(RecordDiff $diff, $pathInArray, $before, $after) |
|
| 207 | { |
|
| 208 | if (! \is_array($after) && ! $after instanceof \Traversable) { |
|
| 209 | ||
| 210 | $beforeValue = $this->convertToString($before); |
|
| 211 | $afterValue = $this->convertToString($after); |
|
| 212 | ||
| 213 | if ($beforeValue !== $afterValue) { |
|
| 214 | $diff->addChange(new RecordDiffEntry($pathInArray, $beforeValue, $afterValue)); |
|
| 215 | } |
|
| 216 | } else { |
|
| 217 | ||
| 218 | // first compare from before to after |
|
| 219 | foreach ($after as $key => $afterValue) { |
|
| 220 | ||
| 221 | $beforeValue = null; |
|
| 222 | ||
| 223 | if ((\is_array($before) || $before instanceof \ArrayAccess) && isset($before[$key])) { |
|
| 224 | $beforeValue = $before[$key]; |
|
| 225 | } |
|
| 226 | ||
| 227 | $this->diffRecursiveFromAfterToBefore( |
|
| 228 | $diff, |
|
| 229 | empty($pathInArray) ? $key : $pathInArray . '.' . $key, |
|
| 230 | $beforeValue, |
|
| 231 | $afterValue |
|
| 232 | ); |
|
| 233 | } |
|
| 234 | } |
|
| 235 | } |
|
| 236 | ||
| 237 | /** |
|
| 238 | * @param $value |
|