@@ -145,23 +145,40 @@ private function getInstancesForResolver(
145145 return [];
146146 }
147147 $ dataProcessingClassList = [];
148- foreach ($ resolverClassesConfig as $ classChain ) {
148+ foreach ($ resolverClassesConfig as $ resolverClass => $ classChain ) {
149149 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+ }
151174 }
152175 }
153176 usort ($ dataProcessingClassList , function ($ data1 , $ data2 ) {
154177 return ((int )$ data1 ['sortOrder ' ] > (int )$ data2 ['sortOrder ' ]) ? 1 : -1 ;
155178 });
156179 $ dataProcessingInstances = [];
157180 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 ' ]);
165182 }
166183 return $ dataProcessingInstances ;
167184 }
0 commit comments