/** * @param FieldContext $fieldContext */ private function guessFieldType(FieldContext $fieldContext) { $field = $fieldContext->getField(); if ($field->getType()) { return; } $guesses = []; foreach ($this->guessers as $guesser) { if ($guesser instanceof FieldTypeGuesserInterface) { $guess = $guesser->guessFieldType($fieldContext); if (null !== $guess) { $guesses[] = $guess; } } } /** @var TypeGuess $best */ $best = $this->getBestGuess($guesses); if (null !== $best) { $field->setType($best->getType()); } }
/** * @param string $className * @param FieldContext $fieldContext * @return string|null */ private function getAccessor($className, FieldContext $fieldContext) { $field = $fieldContext->getField(); $class = new \ReflectionClass($className); $property = $field->getProperty() ?: $field->getName(); $camelName = StringHelper::camelize($property); $getter = 'get' . $camelName; $getsetter = lcfirst($camelName); $isser = 'is' . $camelName; $hasser = 'has' . $camelName; $test = [$getter, $getsetter, $isser, $hasser]; $reflMethods = $class->getMethods(\ReflectionMethod::IS_PUBLIC); $methods = []; foreach ($reflMethods as $reflMethod) { $methods[$reflMethod->getName()] = true; } foreach ($test as $method) { if (isset($methods[$method])) { return $method; } } }
/** * {@inheritdoc} */ public function guessFieldResolveConfig(FieldContext $fieldContext) { return $this->guessResolveConfig($fieldContext->getField()->getResolveConfig()); }