1111use InvalidArgumentException ;
1212use RuntimeException ;
1313use Symfony \Component \Config \Definition \Builder \ArrayNodeDefinition ;
14- use Symfony \Component \Config \Definition \Builder \ExprBuilder ;
15- use Symfony \Component \Config \Definition \Builder \NodeBuilder ;
1614use Symfony \Component \Config \Definition \Builder \NodeDefinition ;
17- use Symfony \Component \Config \Definition \Builder \NodeParentInterface ;
1815use Symfony \Component \Config \Definition \Builder \TreeBuilder ;
1916use Symfony \Component \Config \Definition \ConfigurationInterface ;
2017use Symfony \Component \DependencyInjection \Exception \LogicException ;
@@ -51,7 +48,6 @@ public function __construct(private bool $debug)
5148 {
5249 }
5350
54- /** @return TreeBuilder<'array'> */
5551 public function getConfigTreeBuilder (): TreeBuilder
5652 {
5753 $ treeBuilder = new TreeBuilder ('doctrine ' );
@@ -65,17 +61,16 @@ public function getConfigTreeBuilder(): TreeBuilder
6561
6662 /**
6763 * Add DBAL section to configuration tree
68- *
69- * @param ArrayNodeDefinition<TreeBuilder<'array'>> $node
7064 */
7165 private function addDbalSection (ArrayNodeDefinition $ node ): void
7266 {
7367 // Key that should not be rewritten to the connection config
7468 $ excludedKeys = ['default_connection ' => true , 'driver_schemes ' => true , 'driver_scheme ' => true , 'types ' => true , 'type ' => true ];
7569
76- $ children = $ node ->children ();
77- /** @var NodeBuilder<ArrayNodeDefinition<NodeParentInterface>> $children */
78- $ children ->arrayNode ('dbal ' )
70+ /** @phpstan-ignore class.notFound (Phpstan Symfony extension does not know yet how to deal with these) */
71+ $ node
72+ ->children ()
73+ ->arrayNode ('dbal ' )
7974 ->beforeNormalization ()
8075 ->ifTrue (static function ($ v ) use ($ excludedKeys ) {
8176 if (! is_array ($ v )) {
@@ -159,8 +154,6 @@ private function addDbalSection(ArrayNodeDefinition $node): void
159154
160155 /**
161156 * Return the dbal connections node
162- *
163- * @return ArrayNodeDefinition<TreeBuilder<'array'>>
164157 */
165158 private function getDbalConnectionsNode (): ArrayNodeDefinition
166159 {
@@ -174,6 +167,7 @@ private function getDbalConnectionsNode(): ArrayNodeDefinition
174167
175168 $ this ->configureDbalDriverNode ($ connectionNode );
176169
170+ /** @phpstan-ignore class.notFound (Phpstan Symfony extension does not know yet how to deal with these) */
177171 $ connectionNode
178172 ->fixXmlConfig ('option ' )
179173 ->fixXmlConfig ('mapping_type ' )
@@ -220,9 +214,9 @@ private function getDbalConnectionsNode(): ArrayNodeDefinition
220214 ->scalarNode ('result_cache ' )->end ()
221215 ->end ();
222216
223- $ children = $ connectionNode -> children ();
224- /** @var NodeBuilder<ArrayNodeDefinition<NodeParentInterface>> $children */
225- $ replicaNode = $ children
217+ /** @phpstan-ignore class.notFound (Phpstan Symfony extension does not know yet how to deal with these) */
218+ $ replicaNode = $ connectionNode
219+ -> children ()
226220 ->arrayNode ('replicas ' )
227221 ->useAttributeAsKey ('name ' )
228222 ->prototype ('array ' );
@@ -235,16 +229,12 @@ private function getDbalConnectionsNode(): ArrayNodeDefinition
235229 * Adds config keys related to params processed by the DBAL drivers
236230 *
237231 * These keys are available for replica configurations too.
238- *
239- * @param ArrayNodeDefinition<TP> $node
240- *
241- * @template TP of NodeParentInterface|null
242- **/
232+ */
243233 private function configureDbalDriverNode (ArrayNodeDefinition $ node ): void
244234 {
245- $ validate = $ node -> validate ();
246- /** @var ExprBuilder<ArrayNodeDefinition<NodeParentInterface>> $validate */
247- $ validate
235+ /** @phpstan-ignore class.notFound (Phpstan Symfony extension does not know yet how to deal with these) */
236+ $ node
237+ -> validate ()
248238 ->always (static function (array $ values ) {
249239 if (! isset ($ values ['url ' ])) {
250240 return $ values ;
@@ -265,8 +255,7 @@ private function configureDbalDriverNode(ArrayNodeDefinition $node): void
265255
266256 return $ values ;
267257 })
268- ->end ();
269- $ node
258+ ->end ()
270259 ->children ()
271260 ->scalarNode ('url ' )->info ('A URL with connection information; any parameter value parsed from this string will override explicitly set parameters ' )->end ()
272261 ->scalarNode ('dbname ' )->end ()
@@ -369,8 +358,6 @@ private function configureDbalDriverNode(ArrayNodeDefinition $node): void
369358
370359 /**
371360 * Add the ORM section to configuration tree
372- *
373- * @param ArrayNodeDefinition<TreeBuilder<'array'>> $node
374361 */
375362 private function addOrmSection (ArrayNodeDefinition $ node ): void
376363 {
@@ -383,9 +370,9 @@ private function addOrmSection(ArrayNodeDefinition $node): void
383370 'controller_resolver ' => true ,
384371 ];
385372
386- $ children = $ node -> children ();
387- /** @var NodeBuilder<ArrayNodeDefinition<NodeParentInterface>> $children */
388- $ children
373+ /** @phpstan-ignore class.notFound (Phpstan Symfony extension does not know yet how to deal with these) */
374+ $ node
375+ -> children ()
389376 ->arrayNode ('orm ' )
390377 ->beforeNormalization ()
391378 ->ifTrue (static function ($ v ) use ($ excludedKeys ) {
@@ -494,7 +481,7 @@ private function getOrmEntityListenersNode(): NodeDefinition
494481 $ treeBuilder = new TreeBuilder ('entity_listeners ' );
495482 $ node = $ treeBuilder ->getRootNode ();
496483
497- $ normalizer = static function (array $ mappings ) {
484+ $ normalizer = static function ($ mappings ) {
498485 $ entities = [];
499486
500487 foreach ($ mappings as $ entityClass => $ mapping ) {
@@ -531,14 +518,13 @@ private function getOrmEntityListenersNode(): NodeDefinition
531518 return ['entities ' => $ entities ];
532519 };
533520
534- $ before = $ node -> beforeNormalization ();
535- /** @var ExprBuilder<ArrayNodeDefinition<NodeParentInterface>> $before */
536- $ before
521+ /** @phpstan-ignore class.notFound (Phpstan Symfony extension does not know yet how to deal with these) */
522+ $ node
523+ -> beforeNormalization ()
537524 // Yaml normalization
538525 ->ifTrue (static fn ($ v ) => is_array (reset ($ v )) && is_string (key (reset ($ v ))))
539526 ->then ($ normalizer )
540- ->end ();
541- $ node
527+ ->end ()
542528 ->fixXmlConfig ('entity ' , 'entities ' )
543529 ->children ()
544530 ->arrayNode ('entities ' )
@@ -572,14 +558,13 @@ private function getOrmEntityListenersNode(): NodeDefinition
572558
573559 /**
574560 * Return ORM entity manager node
575- *
576- * @return ArrayNodeDefinition<TreeBuilder<'array'>>
577561 */
578562 private function getOrmEntityManagersNode (): ArrayNodeDefinition
579563 {
580564 $ treeBuilder = new TreeBuilder ('entity_managers ' );
581565 $ node = $ treeBuilder ->getRootNode ();
582566
567+ /** @phpstan-ignore class.notFound (Phpstan Symfony extension does not know yet how to deal with these) */
583568 $ node
584569 ->requiresAtLeastOneElement ()
585570 ->useAttributeAsKey ('name ' )
@@ -748,21 +733,18 @@ private function getOrmEntityManagersNode(): ArrayNodeDefinition
748733
749734 /**
750735 * Return an ORM cache driver node for a given entity manager
751- *
752- * @return ArrayNodeDefinition<TreeBuilder<'array'>>
753736 */
754737 private function getOrmCacheDriverNode (string $ name ): ArrayNodeDefinition
755738 {
756739 $ treeBuilder = new TreeBuilder ($ name );
757740 $ node = $ treeBuilder ->getRootNode ();
758741
759- $ before = $ node -> beforeNormalization ();
760- /** @var ExprBuilder<ArrayNodeDefinition<NodeParentInterface>> $before */
761- $ before
742+ /** @phpstan-ignore class.notFound (Phpstan Symfony extension does not know yet how to deal with these) */
743+ $ node
744+ -> beforeNormalization ()
762745 ->ifString ()
763746 ->then (static fn ($ v ): array => ['type ' => $ v ])
764- ->end ();
765- $ node
747+ ->end ()
766748 ->children ()
767749 ->scalarNode ('type ' )->defaultNull ()->end ()
768750 ->scalarNode ('id ' )->end ()
0 commit comments