23
23
* @license GPL-2.0+
24
24
* @author Jeroen De Dauw < [email protected] >
25
25
*/
26
- class MapDiffer implements Differ, MapDifferInterface {
26
+ class MapDiffer implements MapDifferInterface {
27
27
28
28
/**
29
29
* @var bool
@@ -33,30 +33,32 @@ class MapDiffer implements Differ, MapDifferInterface {
33
33
/**
34
34
* @var Differ
35
35
*/
36
- private $ listDiffer ;
36
+ private $ elementDiffer ;
37
37
38
38
/**
39
39
* @var ValueComparer
40
40
*/
41
41
private $ valueComparer ;
42
42
43
43
/**
44
- * Create differ for recursive diffs
44
+ * The third argument ($comparer) was added in 3.0
45
45
*/
46
- public static function createRecursive ( ValueComparer $ comparer = null , Differ $ listDiffer = null ) {
47
- $ differ = new self ( true , null , $ comparer );
48
- $ differ ->listDiffer = $ listDiffer ?? $ differ ;
49
-
50
- return $ differ ;
46
+ public function __construct ( bool $ recursively = false , Differ $ elementDiffer = null , ValueComparer $ comparer = null ) {
47
+ $ this ->recursively = $ recursively ;
48
+ $ this ->elementDiffer = $ elementDiffer ?? new ListDiffer ();
49
+ $ this ->valueComparer = $ comparer ?? new StrictComparer ();
51
50
}
52
51
53
52
/**
54
- * The third argument ($comparer) was added in 3.0
53
+ * Creates a recursive MapDiffer that by default uses itself to diff elements recursively
54
+ *
55
+ * @since 3.2
55
56
*/
56
- public function __construct ( bool $ recursively = false , Differ $ listDiffer = null , ValueComparer $ comparer = null ) {
57
- $ this ->recursively = $ recursively ;
58
- $ this ->listDiffer = $ listDiffer ?? new ListDiffer ();
59
- $ this ->valueComparer = $ comparer ?? new StrictComparer ();
57
+ public static function newRecursiveDiffer ( ValueComparer $ comparer = null , Differ $ elementDiffer = null ) {
58
+ $ differ = new self ( true , null , $ comparer );
59
+ $ differ ->elementDiffer = $ elementDiffer ?? $ differ ;
60
+
61
+ return $ differ ;
60
62
}
61
63
62
64
/**
@@ -144,7 +146,10 @@ private function getDiffForArrays( array $old, array $new ): Diff {
144
146
return new Diff ( $ this ->doDiff ( $ old , $ new ), true );
145
147
}
146
148
147
- return new Diff ( $ this ->listDiffer ->doDiff ( $ old , $ new ), $ this ->listDiffer instanceof MapDifferInterface );
149
+ return new Diff (
150
+ $ this ->elementDiffer ->doDiff ( $ old , $ new ),
151
+ $ this ->elementDiffer instanceof MapDifferInterface
152
+ );
148
153
}
149
154
150
155
/**
0 commit comments