/** * Apply the resolve config of types that are used by query fields * * @param SchemaContainer $schemaContainer * @param Field $field */ private function mergeResolveConfig(SchemaContainer $schemaContainer, Field $field) { $typeName = TypeParser::getFinalType($field->getType()); if ($schemaContainer->hasType($typeName)) { $typeConfig = $schemaContainer->getType($typeName)->getResolveConfig(); } elseif ($schemaContainer->hasInterface($typeName)) { $typeConfig = $schemaContainer->getInterface($typeName)->getResolveConfig(); } else { return; } $field->mergeResolveConfig($typeConfig); }
/** * @param SchemaContainer $schemaContainer */ private function defineInteracesChildren(SchemaContainer $schemaContainer) { foreach ($schemaContainer->getTypes() as $type) { if (null === $type->getModel()) { continue; } foreach ($type->getInterfaces() as $interfaceName) { $interface = $schemaContainer->getInterface($interfaceName); $interface->setChildClass($type->getName(), $type->getModel()); } } }