Skip to content

Commit 8116136

Browse files
committed
Type::merge() merges arrays only according to the schema (BC break)
1 parent af85b2a commit 8116136

File tree

1 file changed

+3
-3
lines changed

1 file changed

+3
-3
lines changed

src/Schema/Elements/Type.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ final class Type implements Schema
2828
private array $range = [null, null];
2929
private ?string $pattern = null;
3030
private bool $merge = false;
31-
private ?MergeMode $mergeMode = null;
31+
private MergeMode $mergeMode = MergeMode::AppendKeys;
3232

3333

3434
public function __construct(string $type)
@@ -148,7 +148,7 @@ public function merge(mixed $value, mixed $base): mixed
148148
return $value;
149149
}
150150

151-
if (is_array($value) && is_array($base) && ($this->itemsValue || $this->mergeMode)) {
151+
if (is_array($value) && is_array($base)) {
152152
$index = $this->mergeMode === MergeMode::OverwriteKeys ? null : 0;
153153
foreach ($value as $key => $val) {
154154
if ($key === $index) {
@@ -164,7 +164,7 @@ public function merge(mixed $value, mixed $base): mixed
164164
return $base;
165165
}
166166

167-
return Helpers::merge($value, $base);
167+
return $value === null && is_array($base) ? $base : $value;
168168
}
169169

170170

0 commit comments

Comments
 (0)