[], ]; public function __construct(SchemaBuilder $schema, string $name) { $this->schema = $schema; $this->name = $name; } public function label(string $label): self { $this->definition['label'] = $label; return $this; } public function group(string $group): self { $this->definition['group'] = $group; return $this; } public function extends(string $parentType): self { $this->definition['extends'] = $parentType; return $this; } public function fields(array $fields): self { $this->definition['fields'] = $fields; return $this; } public function addField(string $field): self { $this->definition['fields'][] = $field; return $this; } public function addFields(array $fields): self { $this->definition['fields'] = array_merge($this->definition['fields'], $fields); return $this; } /** * Override a specific field's definition for this type */ public function field(string $fieldName): FieldOverrideBuilder { return new FieldOverrideBuilder($this, $fieldName); } /** * Internal: Store field override */ public function setFieldOverride(string $fieldName, array $overrides): self { if (!isset($this->definition['fieldOverrides'])) { $this->definition['fieldOverrides'] = []; } $this->definition['fieldOverrides'][$fieldName] = $overrides; return $this; } /** * Finish building and register the type */ public function __destruct() { $this->schema->registerType($this->name, $this->definition); } }