/**
  * @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());
     }
 }
Esempio n. 2
0
 /**
  * @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;
         }
     }
 }
Esempio n. 3
0
 /**
  * {@inheritdoc}
  */
 public function guessFieldResolveConfig(FieldContext $fieldContext)
 {
     return $this->guessResolveConfig($fieldContext->getField()->getResolveConfig());
 }