From 18fc5a7fb7e21aca02f9777d05e413ba10703d25 Mon Sep 17 00:00:00 2001 From: ex-sh Date: Tue, 13 Jan 2026 06:45:47 +0500 Subject: [PATCH 1/2] fix: allow adding properties starting with 'set' Now legitimate properties with prefix 'set' are cut. Such as 'settled', 'settings', 'setup'... Also, all setters are cut out despite the presence of an explicit 'Field' indication. This shouldn't break backwards compatibility because it requires explicitly specifying 'Field' attribute. --- src/FieldsBuilder.php | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/FieldsBuilder.php b/src/FieldsBuilder.php index c0dc7d27d1..ea8688a18e 100644 --- a/src/FieldsBuilder.php +++ b/src/FieldsBuilder.php @@ -444,9 +444,6 @@ private function getFieldsByMethodAnnotations( $methodName = $refMethod->getName(); if ($queryAnnotation instanceof Field) { - if (str_starts_with($methodName, 'set')) { - continue; - } $for = $queryAnnotation->getFor(); if ($typeName && $for && ! in_array($typeName, $for)) { continue; From 57b3a26b02945a345d81794a24839521ad9a1d46 Mon Sep 17 00:00:00 2001 From: ex-sh Date: Wed, 14 Jan 2026 12:20:40 +0500 Subject: [PATCH 2/2] test: check presence of field with 'set' prefix Checks whether fields that begin with 'set' have been lost as a result of constructing the schema. --- tests/FieldsBuilderTest.php | 11 +++++++++++ tests/Fixtures/TestTypeWithSetPrefix.php | 24 ++++++++++++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 tests/Fixtures/TestTypeWithSetPrefix.php diff --git a/tests/FieldsBuilderTest.php b/tests/FieldsBuilderTest.php index c280218fec..60e9bd2ecd 100644 --- a/tests/FieldsBuilderTest.php +++ b/tests/FieldsBuilderTest.php @@ -60,6 +60,7 @@ use TheCodingMachine\GraphQLite\Fixtures\TestTypeWithMagicProperty; use TheCodingMachine\GraphQLite\Fixtures\TestTypeWithMagicPropertyType; use TheCodingMachine\GraphQLite\Fixtures\TestTypeWithPrefetchMethods; +use TheCodingMachine\GraphQLite\Fixtures\TestTypeWithSetPrefix; use TheCodingMachine\GraphQLite\Fixtures\TestTypeWithSourceFieldInterface; use TheCodingMachine\GraphQLite\Fixtures\TestTypeWithSourceFieldInvalidParameterAnnotation; use TheCodingMachine\GraphQLite\Mappers\CannotMapTypeException; @@ -440,6 +441,16 @@ public function testSourceFieldIsId(): void $this->assertInstanceOf(IDType::class, $fields['test']->getType()->getWrappedType()); } + public function testFieldWithSetPrefixPresence(): void + { + $queryProvider = $this->buildFieldsBuilder(); + $fields = $queryProvider->getFields(new TestTypeWithSetPrefix()); + $this->assertCount(2, $fields); + + $this->assertSame('settings', $fields['settings']->name); + $this->assertSame('numberOfParameters', $fields['numberOfParameters']->name); + } + public function testFromSourceFieldsInterface(): void { $queryProvider = new FieldsBuilder( diff --git a/tests/Fixtures/TestTypeWithSetPrefix.php b/tests/Fixtures/TestTypeWithSetPrefix.php new file mode 100644 index 0000000000..0885d8f691 --- /dev/null +++ b/tests/Fixtures/TestTypeWithSetPrefix.php @@ -0,0 +1,24 @@ +