public function build($config) { $config->addField('hero', ['type' => new CharacterInterface(), 'args' => ['episode' => ['type' => new EpisodeEnum()]], 'resolve' => function ($root, $args) { return StarWarsData::getHero(isset($args['episode']) ? $args['episode'] : null); }])->addField(new Field(['name' => 'human', 'type' => new HumanType(), 'args' => ['id' => new IdType()], 'resolve' => function ($value = null, $args = []) { $humans = StarWarsData::humans(); return isset($humans[$args['id']]) ? $humans[$args['id']] : null; }]))->addField(new Field(['name' => 'droid', 'type' => new DroidType(), 'args' => ['id' => new IdType()], 'resolve' => function ($value = null, $args = []) { $droids = StarWarsData::droids(); return isset($droids[$args['id']]) ? $droids[$args['id']] : null; }])); }
public function resolveType($object) { $humans = StarWarsData::humans(); $droids = StarWarsData::droids(); $id = isset($object['id']) ? $object['id'] : $object; if (isset($humans[$id])) { return new HumanType(); } if (isset($droids[$id])) { return new DroidType(); } return null; }