This repository was archived by the owner on Feb 6, 2020. It is now read-only.
File tree Expand file tree Collapse file tree 1 file changed +25
-1
lines changed Expand file tree Collapse file tree 1 file changed +25
-1
lines changed Original file line number Diff line number Diff line change @@ -35,7 +35,7 @@ function ($alias) use ($aliases) {
35
35
return new self (sprintf (
36
36
"A cycle was detected within the provided aliases: \n\n%s "
37
37
. "\n\nThe cycle was detected in the following alias map: \n\n%s " ,
38
- self ::printCycles ($ detectedCycles ),
38
+ self ::printCycles (self :: deDuplicateDetectedCycles ( $ detectedCycles) ),
39
39
self ::printReferencesMap ($ aliases )
40
40
));
41
41
}
@@ -112,4 +112,28 @@ function ($cycle) {
112
112
)
113
113
);
114
114
}
115
+
116
+ /**
117
+ * @param bool[][] $detectedCycles
118
+ *
119
+ * @return bool[][] de-duplicated
120
+ */
121
+ private static function deDuplicateDetectedCycles (array $ detectedCycles )
122
+ {
123
+ $ detectedCyclesByHash = [];
124
+
125
+ foreach ($ detectedCycles as $ detectedCycle ) {
126
+ $ cycleAliases = array_keys ($ detectedCycle );
127
+
128
+ sort ($ cycleAliases );
129
+
130
+ $ hash = serialize (array_values ($ cycleAliases ));
131
+
132
+ $ detectedCyclesByHash [$ hash ] = isset ($ detectedCyclesByHash [$ hash ])
133
+ ? $ detectedCyclesByHash [$ hash ]
134
+ : $ detectedCycle ;
135
+ }
136
+
137
+ return array_values ($ detectedCyclesByHash );
138
+ }
115
139
}
You can’t perform that action at this time.
0 commit comments