Skip to content

Commit 5545c5b

Browse files
committed
Type::merge() merges arrays only according to the schema (BC break)
1 parent 90f2eb5 commit 5545c5b

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
@@ -29,7 +29,7 @@ final class Type implements Schema
2929
private array $range = [null, null];
3030
private ?string $pattern = null;
3131
private bool $merge = false;
32-
private ?MergeMode $mergeMode = null;
32+
private MergeMode $mergeMode = MergeMode::AppendKeys;
3333

3434

3535
public function __construct(string $type)
@@ -149,7 +149,7 @@ public function merge(mixed $value, mixed $base): mixed
149149
return $value;
150150
}
151151

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

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

171171

0 commit comments

Comments
 (0)