@@ -360,89 +360,58 @@ private static function resolveField(ExecutionContext $exeContext, ObjectType $p
360360 {
361361 $ fieldAST = $ fieldASTs [0 ];
362362
363- $ uid = self ::getFieldUid ($ fieldAST , $ parentType );
364-
365- // Get memoized variables if they exist
366- if (isset ($ exeContext ->memoized ['resolveField ' ][$ uid ])) {
367- $ memoized = $ exeContext ->memoized ['resolveField ' ][$ uid ];
368- $ fieldDef = $ memoized ['fieldDef ' ];
369- $ returnType = $ fieldDef ->getType ();
370- $ args = $ memoized ['args ' ];
371- $ info = $ memoized ['info ' ];
372- }
373- else {
374- $ fieldName = $ fieldAST ->name ->value ;
375-
376- $ fieldDef = self ::getFieldDef ($ exeContext ->schema , $ parentType , $ fieldName );
377-
378- if (!$ fieldDef ) {
379- return self ::$ UNDEFINED ;
380- }
381-
382- $ returnType = $ fieldDef ->getType ();
383-
384- // Build hash of arguments from the field.arguments AST, using the
385- // variables scope to fulfill any variable references.
386- $ args = Values::getArgumentValues (
387- $ fieldDef ->args ,
388- $ fieldAST ->arguments ,
389- $ exeContext ->variableValues
390- );
391-
392- // The resolve function's optional third argument is a collection of
393- // information about the current execution state.
394- $ info = new ResolveInfo ([
395- 'fieldName ' => $ fieldName ,
396- 'fieldASTs ' => $ fieldASTs ,
397- 'returnType ' => $ returnType ,
398- 'parentType ' => $ parentType ,
399- 'schema ' => $ exeContext ->schema ,
400- 'fragments ' => $ exeContext ->fragments ,
401- 'rootValue ' => $ exeContext ->rootValue ,
402- 'operation ' => $ exeContext ->operation ,
403- 'variableValues ' => $ exeContext ->variableValues ,
404- ]);
405-
406- // Memoizing results for same query field
407- // (useful for lists when several values are resolved against the same field)
408- $ exeContext ->memoized ['resolveField ' ][$ uid ] = $ memoized = [
409- 'fieldDef ' => $ fieldDef ,
410- 'args ' => $ args ,
411- 'info ' => $ info ,
412- 'results ' => new \SplObjectStorage
413- ];
414- }
415-
416- // When source value is object it is possible to memoize certain subset of results
417- $ isObject = is_object ($ source );
418-
419- if ($ isObject && isset ($ memoized ['results ' ][$ source ])) {
420- $ result = $ memoized ['results ' ][$ source ];
363+ $ fieldName = $ fieldAST ->name ->value ;
364+
365+ $ fieldDef = self ::getFieldDef ($ exeContext ->schema , $ parentType , $ fieldName );
366+
367+ if (!$ fieldDef ) {
368+ return self ::$ UNDEFINED ;
369+ }
370+
371+ $ returnType = $ fieldDef ->getType ();
372+
373+ // Build hash of arguments from the field.arguments AST, using the
374+ // variables scope to fulfill any variable references.
375+ $ args = Values::getArgumentValues (
376+ $ fieldDef ->args ,
377+ $ fieldAST ->arguments ,
378+ $ exeContext ->variableValues
379+ );
380+
381+ // The resolve function's optional third argument is a collection of
382+ // information about the current execution state.
383+ $ info = new ResolveInfo ([
384+ 'fieldName ' => $ fieldName ,
385+ 'fieldASTs ' => $ fieldASTs ,
386+ 'returnType ' => $ returnType ,
387+ 'parentType ' => $ parentType ,
388+ 'schema ' => $ exeContext ->schema ,
389+ 'fragments ' => $ exeContext ->fragments ,
390+ 'rootValue ' => $ exeContext ->rootValue ,
391+ 'operation ' => $ exeContext ->operation ,
392+ 'variableValues ' => $ exeContext ->variableValues ,
393+ ]);
394+
395+
396+ if (isset ($ fieldDef ->resolveFn )) {
397+ $ resolveFn = $ fieldDef ->resolveFn ;
398+ } else if (isset ($ parentType ->resolveFieldFn )) {
399+ $ resolveFn = $ parentType ->resolveFieldFn ;
421400 } else {
422- if (isset ($ fieldDef ->resolveFn )) {
423- $ resolveFn = $ fieldDef ->resolveFn ;
424- } else if (isset ($ parentType ->resolveFieldFn )) {
425- $ resolveFn = $ parentType ->resolveFieldFn ;
426- } else {
427- $ resolveFn = self ::$ defaultResolveFn ;
428- }
401+ $ resolveFn = self ::$ defaultResolveFn ;
402+ }
429403
430- // Get the resolve function, regardless of if its result is normal
431- // or abrupt (error).
432- $ result = self ::resolveOrError ($ resolveFn , $ source , $ args , $ info );
404+ // Get the resolve function, regardless of if its result is normal
405+ // or abrupt (error).
406+ $ result = self ::resolveOrError ($ resolveFn , $ source , $ args , $ info );
433407
434- $ result = self ::completeValueCatchingError (
435- $ exeContext ,
436- $ returnType ,
437- $ fieldASTs ,
438- $ info ,
439- $ result
440- );
441-
442- if ($ isObject ) {
443- $ memoized ['results ' ][$ source ] = $ result ;
444- }
445- }
408+ $ result = self ::completeValueCatchingError (
409+ $ exeContext ,
410+ $ returnType ,
411+ $ fieldASTs ,
412+ $ info ,
413+ $ result
414+ );
446415
447416 return $ result ;
448417 }
0 commit comments