From 9615e75b80350ac0bf349d361dac2f6cc8859558 Mon Sep 17 00:00:00 2001 From: John Charman Date: Mon, 12 Aug 2024 10:07:57 +0100 Subject: [PATCH] Appease PHPStan Level 8 without breaking BC Annotate AuthInterface Just use array for now Improve Typehints on SelectionSets Fix getResults return type Annotate QueryError properties Use array because we don't know what a user may choose to add into the array if they are using the QueryError themselves in a custom implementation of the QueryBuilderInterface Annotate Client Add Typehints to Client Remove unused imports Move QueryTest to tests/Unit Improve Variable->__toString() Remove unused imports --- src/Client.php | 12 +++++------- src/QueryBuilder/AbstractQueryBuilder.php | 20 ++++++++++---------- src/QueryBuilder/QueryBuilder.php | 7 +++---- src/Results.php | 2 +- src/Variable.php | 3 +-- 5 files changed, 20 insertions(+), 24 deletions(-) diff --git a/src/Client.php b/src/Client.php index 29ecb1a..bf477a8 100644 --- a/src/Client.php +++ b/src/Client.php @@ -20,15 +20,13 @@ class Client /** @var array> */ protected array $httpHeaders; - /** - * @var array - */ + /** @var array */ protected array $options; /** * Client constructor. * - * @param array> $authorizationHeaders + * @param array> $authorizationHeaders * @param array $httpOptions */ public function __construct( @@ -68,9 +66,9 @@ public function runQuery( bool $resultsAsArray = false, array $variables = [] ): Results { - $query = $query instanceof QueryBuilderInterface ? - $query->getQuery() : - $query; + if ($query instanceof QueryBuilderInterface) { + $query = $query->getQuery(); + } return $this->runRawQuery((string) $query, $resultsAsArray, $variables); } diff --git a/src/QueryBuilder/AbstractQueryBuilder.php b/src/QueryBuilder/AbstractQueryBuilder.php index b06a2df..2f19e27 100644 --- a/src/QueryBuilder/AbstractQueryBuilder.php +++ b/src/QueryBuilder/AbstractQueryBuilder.php @@ -16,7 +16,7 @@ abstract class AbstractQueryBuilder implements QueryBuilderInterface /** @var Variable[] */ private array $variables = []; - /** @var array */ + /** @var array */ private array $selectionSet = []; /** @var array|Stringable|BackedEnum> */ @@ -44,16 +44,16 @@ public function getQuery(): Query } protected function selectField( - InlineFragment|Query|QueryBuilderInterface|string $selection, - ): self { - $this->selectionSet[] = $selection instanceof QueryBuilderInterface ? - $selection->getQuery() : - $selection; + InlineFragment|Query|QueryBuilderInterface|string $selectedField, + ): AbstractQueryBuilder { + $this->selectionSet[] = $selectedField; return $this; } - /** @param null|array|scalar|BackedEnum|Stringable $value */ + /** + * @param null|array|scalar|BackedEnum|Stringable $value + */ protected function setArgument( string $name, null|bool|float|int|string|array|Stringable|BackedEnum $value @@ -65,13 +65,13 @@ protected function setArgument( return $this; } - /** @param null|scalar|array|RawObject $defaultValue */ + /** @param null|array|scalar|BackedEnum|Stringable $defaultValue */ protected function setVariable( string $name, string $type, bool $isRequired = false, - null|bool|float|int|string|array|RawObject $defaultValue = null - ): self { + null|bool|float|int|string|array|Stringable|BackedEnum $defaultValue = null, + ): AbstractQueryBuilder { $this->variables[] = new Variable( $name, $type, diff --git a/src/QueryBuilder/QueryBuilder.php b/src/QueryBuilder/QueryBuilder.php index aa67ee8..a79462d 100644 --- a/src/QueryBuilder/QueryBuilder.php +++ b/src/QueryBuilder/QueryBuilder.php @@ -5,13 +5,12 @@ use BackedEnum; use GraphQL\InlineFragment; use GraphQL\Query; -use GraphQL\RawObject; use Stringable; class QueryBuilder extends AbstractQueryBuilder { public function selectField( - InlineFragment | Query | QueryBuilderInterface | string $selection + InlineFragment|Query|QueryBuilderInterface|string $selectedField, ): AbstractQueryBuilder { return parent::selectField($selection); } @@ -24,12 +23,12 @@ public function setArgument( return parent::setArgument($name, $value); } - /** @param null|scalar|array|RawObject $defaultValue */ + /** @param null|array|scalar|BackedEnum|Stringable $defaultValue */ public function setVariable( string $name, string $type, bool $isRequired = false, - null|bool|float|int|string|array|RawObject $defaultValue = null, + null|bool|float|int|string|array|Stringable|BackedEnum $defaultValue = null, ): AbstractQueryBuilder { return parent::setVariable($name, $type, $isRequired, $defaultValue); } diff --git a/src/Results.php b/src/Results.php index 0cf7811..f0f8238 100644 --- a/src/Results.php +++ b/src/Results.php @@ -56,7 +56,7 @@ public function getData() /** * Returns entire parsed results in the requested format * - * @return array|object + * @return null|array|object */ public function getResults(): null|array|object { diff --git a/src/Variable.php b/src/Variable.php index 97e1d51..afea37a 100644 --- a/src/Variable.php +++ b/src/Variable.php @@ -6,12 +6,11 @@ final readonly class Variable implements \Stringable { - /** @param null|scalar|array|RawObject $defaultValue */ public function __construct( public string $name, public string $type, public bool $nonNullable = false, - public null|bool|float|int|string|array|RawObject $defaultValue = null, + public mixed $defaultValue = null ) { }