@@ -145,23 +145,40 @@ private function getInstancesForResolver(
145
145
return [];
146
146
}
147
147
$ dataProcessingClassList = [];
148
- foreach ($ resolverClassesConfig as $ classChain ) {
148
+ foreach ($ resolverClassesConfig as $ resolverClass => $ classChain ) {
149
149
foreach ($ classChain as $ classData ) {
150
- $ dataProcessingClassList [] = $ classData ;
150
+ if (is_a ($ classData ['class ' ], $ interfaceName , true )) {
151
+ $ dataProcessingClassList [] = $ classData ;
152
+ } else {
153
+ if ($ interfaceName == HydratorInterface::class) {
154
+ throw new ConfigurationMismatchException (
155
+ __ (
156
+ 'Hydrator %1 configured for resolver %2 must implement %3. ' ,
157
+ $ classData ['class ' ],
158
+ $ resolverClass ,
159
+ $ interfaceName
160
+ )
161
+ );
162
+ } else {
163
+ throw new ConfigurationMismatchException (
164
+ __ (
165
+ 'Dehydrator %1 configured for resolver %2 must implement %3. ' ,
166
+ $ classData ['class ' ],
167
+ $ resolverClass ,
168
+ $ interfaceName
169
+ )
170
+ );
171
+ }
172
+
173
+ }
151
174
}
152
175
}
153
176
usort ($ dataProcessingClassList , function ($ data1 , $ data2 ) {
154
177
return ((int )$ data1 ['sortOrder ' ] > (int )$ data2 ['sortOrder ' ]) ? 1 : -1 ;
155
178
});
156
179
$ dataProcessingInstances = [];
157
180
foreach ($ dataProcessingClassList as $ classData ) {
158
- if (is_a ($ classData ['class ' ], $ interfaceName , true )) {
159
- $ dataProcessingInstances [] = $ this ->objectManager ->get ($ classData ['class ' ]);
160
- } else {
161
- throw new ConfigurationMismatchException (
162
- __ ('%1 must implement %2 ' , $ classData ['class ' ], $ interfaceName )
163
- );
164
- }
181
+ $ dataProcessingInstances [] = $ this ->objectManager ->get ($ classData ['class ' ]);
165
182
}
166
183
return $ dataProcessingInstances ;
167
184
}
0 commit comments