6 declare(strict_types=1);
20 private $typeMetaReader;
33 $this->typeMetaReader = $typeMetaReader;
34 $this->docReader = $docReader;
43 public function read(\GraphQL\Type\Definition\FieldDefinition $fieldMeta) : array
45 $fieldName = $fieldMeta->name;
46 $fieldTypeMeta = $fieldMeta->getType();
52 $fieldResolver = $this->getFieldResolver($fieldMeta);
53 if (!empty($fieldResolver)) {
54 $result[
'resolver'] = $fieldResolver;
62 if ($this->docReader->read($fieldMeta->astNode->directives)) {
63 $result[
'description'] = $this->docReader->read($fieldMeta->astNode->directives);
68 $argumentName = $argumentMeta->name;
69 $result[
'arguments'][$argumentName] = [
70 'name' => $argumentName,
72 if ($argumentMeta->defaultValue !==
null) {
73 $result[
'arguments'][$argumentName][
'defaultValue'] = $argumentMeta->defaultValue;
75 $typeMeta = $argumentMeta->getType();
76 $result[
'arguments'][$argumentName] = array_merge(
77 $result[
'arguments'][$argumentName],
81 if ($this->docReader->read($argumentMeta->astNode->directives)) {
82 $result[
'arguments'][$argumentName][
'description'] =
83 $this->docReader->read($argumentMeta->astNode->directives);
95 private function getFieldResolver(\GraphQL\Type\Definition\FieldDefinition $fieldMeta) : string
98 $directives = $fieldMeta->astNode->directives;
99 foreach ($directives as $directive) {
100 if ($directive->name->value ==
'resolver') {
101 foreach ($directive->arguments as $directiveArgument) {
102 if ($directiveArgument->name->value ==
'class') {
103 return $directiveArgument->value->value;