From aac8fe0db5d3d5a0cfb234cddb3ceca1d6968a9a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Edi=20Modri=C4=87?= Date: Mon, 10 Nov 2025 10:33:03 +0100 Subject: [PATCH] Support stringNode in Config component --- extension.neon | 2 +- ...ayNodeDefinitionPrototypeDynamicReturnTypeExtension.php | 2 ++ .../Config/TreeBuilderDynamicReturnTypeExtension.php | 1 + tests/Type/Symfony/data/tree_builder.php | 7 +++++++ 4 files changed, 11 insertions(+), 1 deletion(-) diff --git a/extension.neon b/extension.neon index ecc2ddf3..7e70405b 100644 --- a/extension.neon +++ b/extension.neon @@ -254,7 +254,7 @@ services: tags: [phpstan.broker.dynamicMethodReturnTypeExtension] arguments: className: Symfony\Component\Config\Definition\Builder\NodeBuilder - methods: [arrayNode, scalarNode, booleanNode, integerNode, floatNode, enumNode, variableNode] + methods: [arrayNode, scalarNode, stringNode, booleanNode, integerNode, floatNode, enumNode, variableNode] # NodeBuilder::end() return type - diff --git a/src/Type/Symfony/Config/ArrayNodeDefinitionPrototypeDynamicReturnTypeExtension.php b/src/Type/Symfony/Config/ArrayNodeDefinitionPrototypeDynamicReturnTypeExtension.php index 1dae22e2..ef54b0d7 100644 --- a/src/Type/Symfony/Config/ArrayNodeDefinitionPrototypeDynamicReturnTypeExtension.php +++ b/src/Type/Symfony/Config/ArrayNodeDefinitionPrototypeDynamicReturnTypeExtension.php @@ -19,6 +19,7 @@ final class ArrayNodeDefinitionPrototypeDynamicReturnTypeExtension implements Dy private const PROTOTYPE_METHODS = [ 'arrayPrototype', 'scalarPrototype', + 'stringPrototype', 'booleanPrototype', 'integerPrototype', 'floatPrototype', @@ -29,6 +30,7 @@ final class ArrayNodeDefinitionPrototypeDynamicReturnTypeExtension implements Dy private const MAPPING = [ 'variable' => 'Symfony\Component\Config\Definition\Builder\VariableNodeDefinition', 'scalar' => 'Symfony\Component\Config\Definition\Builder\ScalarNodeDefinition', + 'string' => 'Symfony\Component\Config\Definition\Builder\StringNodeDefinition', 'boolean' => 'Symfony\Component\Config\Definition\Builder\BooleanNodeDefinition', 'integer' => 'Symfony\Component\Config\Definition\Builder\IntegerNodeDefinition', 'float' => 'Symfony\Component\Config\Definition\Builder\FloatNodeDefinition', diff --git a/src/Type/Symfony/Config/TreeBuilderDynamicReturnTypeExtension.php b/src/Type/Symfony/Config/TreeBuilderDynamicReturnTypeExtension.php index 4f266c50..9d90d544 100644 --- a/src/Type/Symfony/Config/TreeBuilderDynamicReturnTypeExtension.php +++ b/src/Type/Symfony/Config/TreeBuilderDynamicReturnTypeExtension.php @@ -18,6 +18,7 @@ final class TreeBuilderDynamicReturnTypeExtension implements DynamicStaticMethod private const MAPPING = [ 'variable' => 'Symfony\Component\Config\Definition\Builder\VariableNodeDefinition', 'scalar' => 'Symfony\Component\Config\Definition\Builder\ScalarNodeDefinition', + 'string' => 'Symfony\Component\Config\Definition\Builder\StringNodeDefinition', 'boolean' => 'Symfony\Component\Config\Definition\Builder\BooleanNodeDefinition', 'integer' => 'Symfony\Component\Config\Definition\Builder\IntegerNodeDefinition', 'float' => 'Symfony\Component\Config\Definition\Builder\FloatNodeDefinition', diff --git a/tests/Type/Symfony/data/tree_builder.php b/tests/Type/Symfony/data/tree_builder.php index 8c3c3270..2f3f33f4 100644 --- a/tests/Type/Symfony/data/tree_builder.php +++ b/tests/Type/Symfony/data/tree_builder.php @@ -154,6 +154,13 @@ assertType('Symfony\Component\Config\Definition\Builder\ScalarNodeDefinition', $scalarRootNode->defaultValue("default")); assertType('Symfony\Component\Config\Definition\Builder\TreeBuilder', $scalarRootNode->defaultValue("default")->end()); +$stringTreeBuilder = new TreeBuilder('my_tree', 'string'); +$stringRootNode = $stringTreeBuilder->getRootNode(); + +assertType('Symfony\Component\Config\Definition\Builder\StringNodeDefinition', $stringRootNode); +assertType('Symfony\Component\Config\Definition\Builder\StringNodeDefinition', $stringRootNode->defaultValue("default")); +assertType('Symfony\Component\Config\Definition\Builder\TreeBuilder', $stringRootNode->defaultValue("default")->end()); + $booleanTreeBuilder = new TreeBuilder('my_tree', 'boolean'); $booleanRootNode = $booleanTreeBuilder->getRootNode();