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();