2323 * @license GPL-2.0+
2424 * @author Jeroen De Dauw < [email protected] > 2525 */
26- class MapDiffer implements Differ, MapDifferInterface {
26+ class MapDiffer implements MapDifferInterface {
2727
2828 /**
2929 * @var bool
@@ -33,30 +33,32 @@ class MapDiffer implements Differ, MapDifferInterface {
3333 /**
3434 * @var Differ
3535 */
36- private $ listDiffer ;
36+ private $ elementDiffer ;
3737
3838 /**
3939 * @var ValueComparer
4040 */
4141 private $ valueComparer ;
4242
4343 /**
44- * Create differ for recursive diffs
44+ * The third argument ($comparer) was added in 3.0
4545 */
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 ();
5150 }
5251
5352 /**
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
5556 */
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 ;
6062 }
6163
6264 /**
@@ -144,7 +146,10 @@ private function getDiffForArrays( array $old, array $new ): Diff {
144146 return new Diff ( $ this ->doDiff ( $ old , $ new ), true );
145147 }
146148
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+ );
148153 }
149154
150155 /**
0 commit comments