Skip to content

Commit d4d5ab0

Browse files
committed
feat: resolve generics in configuration file for phpstan level 7
1 parent a1325da commit d4d5ab0

File tree

2 files changed

+28
-18
lines changed

2 files changed

+28
-18
lines changed

phpstan.neon.dist

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,11 @@ parameters:
88
- src
99
- tests
1010
ignoreErrors:
11-
- identifier: 'class.notFound'
12-
path: src/DependencyInjection/Configuration.php
1311
- identifier: 'assign.propertyType'
1412
path: src/DataCollector/DoctrineDataCollector.php
1513
- identifier: 'return.type'
1614
path: src/DataCollector/DoctrineDataCollector.php
1715
- identifier: 'assign.propertyType'
1816
path: src/DependencyInjection/DoctrineExtension.php
17+
- message: '#Call to method .* on an unknown class Symfony\\Component\\Config\\Definition\\Builder\\.*#'
18+
path: src/DependencyInjection/Configuration.php

src/DependencyInjection/Configuration.php

Lines changed: 26 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111
use InvalidArgumentException;
1212
use RuntimeException;
1313
use Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition;
14+
use Symfony\Component\Config\Definition\Builder\ExprBuilder;
15+
use Symfony\Component\Config\Definition\Builder\NodeBuilder;
1416
use Symfony\Component\Config\Definition\Builder\NodeDefinition;
1517
use Symfony\Component\Config\Definition\Builder\NodeParentInterface;
1618
use Symfony\Component\Config\Definition\Builder\TreeBuilder;
@@ -71,9 +73,9 @@ private function addDbalSection(ArrayNodeDefinition $node): void
7173
// Key that should not be rewritten to the connection config
7274
$excludedKeys = ['default_connection' => true, 'driver_schemes' => true, 'driver_scheme' => true, 'types' => true, 'type' => true];
7375

74-
$node
75-
->children()
76-
->arrayNode('dbal')
76+
$children = $node->children();
77+
/** @var NodeBuilder<ArrayNodeDefinition<NodeParentInterface>> $children */
78+
$children->arrayNode('dbal')
7779
->beforeNormalization()
7880
->ifTrue(static function ($v) use ($excludedKeys) {
7981
if (! is_array($v)) {
@@ -218,8 +220,9 @@ private function getDbalConnectionsNode(): ArrayNodeDefinition
218220
->scalarNode('result_cache')->end()
219221
->end();
220222

221-
$replicaNode = $connectionNode
222-
->children()
223+
$children = $connectionNode->children();
224+
/** @var NodeBuilder<ArrayNodeDefinition<NodeParentInterface>> $children */
225+
$replicaNode = $children
223226
->arrayNode('replicas')
224227
->useAttributeAsKey('name')
225228
->prototype('array');
@@ -239,8 +242,9 @@ private function getDbalConnectionsNode(): ArrayNodeDefinition
239242
**/
240243
private function configureDbalDriverNode(ArrayNodeDefinition $node): void
241244
{
242-
$node
243-
->validate()
245+
$validate = $node->validate();
246+
/** @var ExprBuilder<ArrayNodeDefinition<NodeParentInterface>> $validate */
247+
$validate
244248
->always(static function (array $values) {
245249
if (! isset($values['url'])) {
246250
return $values;
@@ -261,7 +265,8 @@ private function configureDbalDriverNode(ArrayNodeDefinition $node): void
261265

262266
return $values;
263267
})
264-
->end()
268+
->end();
269+
$node
265270
->children()
266271
->scalarNode('url')->info('A URL with connection information; any parameter value parsed from this string will override explicitly set parameters')->end()
267272
->scalarNode('dbname')->end()
@@ -378,8 +383,9 @@ private function addOrmSection(ArrayNodeDefinition $node): void
378383
'controller_resolver' => true,
379384
];
380385

381-
$node
382-
->children()
386+
$children = $node->children();
387+
/** @var NodeBuilder<ArrayNodeDefinition<NodeParentInterface>> $children */
388+
$children
383389
->arrayNode('orm')
384390
->beforeNormalization()
385391
->ifTrue(static function ($v) use ($excludedKeys) {
@@ -525,12 +531,14 @@ private function getOrmEntityListenersNode(): NodeDefinition
525531
return ['entities' => $entities];
526532
};
527533

528-
$node
529-
->beforeNormalization()
534+
$before = $node->beforeNormalization();
535+
/** @var ExprBuilder<ArrayNodeDefinition<NodeParentInterface>> $before */
536+
$before
530537
// Yaml normalization
531538
->ifTrue(static fn ($v) => is_array(reset($v)) && is_string(key(reset($v))))
532539
->then($normalizer)
533-
->end()
540+
->end();
541+
$node
534542
->fixXmlConfig('entity', 'entities')
535543
->children()
536544
->arrayNode('entities')
@@ -748,11 +756,13 @@ private function getOrmCacheDriverNode(string $name): ArrayNodeDefinition
748756
$treeBuilder = new TreeBuilder($name);
749757
$node = $treeBuilder->getRootNode();
750758

751-
$node
752-
->beforeNormalization()
759+
$before = $node->beforeNormalization();
760+
/** @var ExprBuilder<ArrayNodeDefinition<NodeParentInterface>> $before */
761+
$before
753762
->ifString()
754763
->then(static fn ($v): array => ['type' => $v])
755-
->end()
764+
->end();
765+
$node
756766
->children()
757767
->scalarNode('type')->defaultNull()->end()
758768
->scalarNode('id')->end()

0 commit comments

Comments
 (0)