Automattic\WooCommerce\Vendor\GraphQL\Type
SchemaConfig{} │ WC 1.0
Configuration options for schema construction.
The options accepted by the create method are described in the schema definition docs.
Usage example:
$config = SchemaConfig::create()
->setQuery($myQueryType)
->setTypeLoader($myTypeLoader);
$schema = new Schema($config);
No Hooks.
Usage
$SchemaConfig = new SchemaConfig();
// use class methods
Methods
- public static create(array $options = [])
- public getAssumeValid()
- public getAstNode()
- public getDescription()
- public getDirectives()
- public getExtensionASTNodes()
- public getMutation()
- public getQuery()
- public getSubscription()
- public getTypeLoader()
- public getTypes()
- public setAssumeValid(bool $assumeValid)
- public setAstNode(?SchemaDefinitionNode $astNode)
- public setDescription(?string $description)
- public setDirectives(?array $directives)
- public setExtensionASTNodes(array $extensionASTNodes)
- public setMutation($mutation)
- public setQuery($query)
- public setSubscription($subscription)
- public setTypeLoader(?callable $typeLoader)
- public setTypes($types)
- protected assertMaybeLazyObjectType($maybeLazyObjectType)
Notes
SchemaConfig{} SchemaConfig{} code
WC 10.9.4
class SchemaConfig
{
public ?string $description = null;
/** @var MaybeLazyObjectType */
public $query;
/** @var MaybeLazyObjectType */
public $mutation;
/** @var MaybeLazyObjectType */
public $subscription;
/**
* @var iterable|callable
*
* @phpstan-var Types
*/
public $types = [];
/** @var array<Directive>|null */
public ?array $directives = null;
/**
* @var callable|null
*
* @phpstan-var TypeLoader|null
*/
public $typeLoader;
public bool $assumeValid = false;
public ?SchemaDefinitionNode $astNode = null;
/** @var array<SchemaExtensionNode> */
public array $extensionASTNodes = [];
/**
* Converts an array of options to instance of SchemaConfig
* (or just returns empty config when array is not passed).
*
* @phpstan-param SchemaConfigOptions $options
*
* @throws InvariantViolation
*
* @api
*/
public static function create(array $options = []): self
{
$config = new static();
if ($options !== []) {
if (isset($options['description'])) {
$config->setDescription($options['description']);
}
if (isset($options['query'])) {
$config->setQuery($options['query']);
}
if (isset($options['mutation'])) {
$config->setMutation($options['mutation']);
}
if (isset($options['subscription'])) {
$config->setSubscription($options['subscription']);
}
if (isset($options['types'])) {
$config->setTypes($options['types']);
}
if (isset($options['directives'])) {
$config->setDirectives($options['directives']);
}
if (isset($options['typeLoader'])) {
$config->setTypeLoader($options['typeLoader']);
}
if (isset($options['assumeValid'])) {
$config->setAssumeValid($options['assumeValid']);
}
if (isset($options['astNode'])) {
$config->setAstNode($options['astNode']);
}
if (isset($options['extensionASTNodes'])) {
$config->setExtensionASTNodes($options['extensionASTNodes']);
}
}
return $config;
}
/** @api */
public function getDescription(): ?string
{
return $this->description;
}
/** @api */
public function setDescription(?string $description): self
{
$this->description = $description;
return $this;
}
/**
* @return MaybeLazyObjectType
*
* @api
*/
public function getQuery()
{
return $this->query;
}
/**
* @param MaybeLazyObjectType $query
*
* @throws InvariantViolation
*
* @api
*/
public function setQuery($query): self
{
$this->assertMaybeLazyObjectType($query);
$this->query = $query;
return $this;
}
/**
* @return MaybeLazyObjectType
*
* @api
*/
public function getMutation()
{
return $this->mutation;
}
/**
* @param MaybeLazyObjectType $mutation
*
* @throws InvariantViolation
*
* @api
*/
public function setMutation($mutation): self
{
$this->assertMaybeLazyObjectType($mutation);
$this->mutation = $mutation;
return $this;
}
/**
* @return MaybeLazyObjectType
*
* @api
*/
public function getSubscription()
{
return $this->subscription;
}
/**
* @param MaybeLazyObjectType $subscription
*
* @throws InvariantViolation
*
* @api
*/
public function setSubscription($subscription): self
{
$this->assertMaybeLazyObjectType($subscription);
$this->subscription = $subscription;
return $this;
}
/**
* @return array|callable
*
* @phpstan-return Types
*
* @api
*/
public function getTypes()
{
return $this->types;
}
/**
* @param array|callable $types
*
* @phpstan-param Types $types
*
* @api
*/
public function setTypes($types): self
{
$this->types = $types;
return $this;
}
/**
* @return array<Directive>|null
*
* @api
*/
public function getDirectives(): ?array
{
return $this->directives;
}
/**
* @param array<Directive>|null $directives
*
* @api
*/
public function setDirectives(?array $directives): self
{
$this->directives = $directives;
return $this;
}
/**
* @return callable|null $typeLoader
*
* @phpstan-return TypeLoader|null $typeLoader
*
* @api
*/
public function getTypeLoader(): ?callable
{
return $this->typeLoader;
}
/**
* @phpstan-param TypeLoader|null $typeLoader
*
* @api
*/
public function setTypeLoader(?callable $typeLoader): self
{
$this->typeLoader = $typeLoader;
return $this;
}
public function getAssumeValid(): bool
{
return $this->assumeValid;
}
public function setAssumeValid(bool $assumeValid): self
{
$this->assumeValid = $assumeValid;
return $this;
}
public function getAstNode(): ?SchemaDefinitionNode
{
return $this->astNode;
}
public function setAstNode(?SchemaDefinitionNode $astNode): self
{
$this->astNode = $astNode;
return $this;
}
/** @return array<SchemaExtensionNode> */
public function getExtensionASTNodes(): array
{
return $this->extensionASTNodes;
}
/** @param array<SchemaExtensionNode> $extensionASTNodes */
public function setExtensionASTNodes(array $extensionASTNodes): self
{
$this->extensionASTNodes = $extensionASTNodes;
return $this;
}
/**
* @param mixed $maybeLazyObjectType Should be MaybeLazyObjectType
*
* @throws InvariantViolation
*/
protected function assertMaybeLazyObjectType($maybeLazyObjectType): void
{
if ($maybeLazyObjectType instanceof ObjectType || is_callable($maybeLazyObjectType) || is_null($maybeLazyObjectType)) {
return;
}
$notMaybeLazyObjectType = is_object($maybeLazyObjectType)
? get_class($maybeLazyObjectType)
: gettype($maybeLazyObjectType);
$objectTypeClass = ObjectType::class;
throw new InvariantViolation("Expected instanceof {$objectTypeClass}, a callable that returns such an instance, or null, got: {$notMaybeLazyObjectType}.");
}
}