Skip to content

Commit f08fd6a

Browse files
committed
"Refactor Configuration methods to add PHPStan annotations and simplify ignore rules for NodeBuilder-related false positives."
1 parent 0d644cd commit f08fd6a

File tree

3 files changed

+35
-0
lines changed

3 files changed

+35
-0
lines changed

phpstan.neon

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,13 @@ parameters:
99
paths:
1010
- 'src/TwigExtra/src'
1111
- 'src/TwigHooks/src'
12+
13+
ignoreErrors:
14+
# Symfony Config component relies on magic methods in NodeBuilder.
15+
# PHPStan struggles to resolve these methods on the builder class when complex generics are involved,
16+
# resulting in false positive "unknown class" errors.
17+
-
18+
message: '#Call to method \w+Node\(\) on an unknown class .*NodeBuilder.*#'
19+
paths:
20+
- 'src/TwigHooks/src/DependencyInjection/Configuration.php'
21+
- 'src/TwigExtra/src/Symfony/DependencyInjection/Configuration.php'

src/TwigExtra/src/Symfony/DependencyInjection/Configuration.php

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,22 +14,33 @@
1414
namespace Sylius\TwigExtra\Symfony\DependencyInjection;
1515

1616
use Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition;
17+
use Symfony\Component\Config\Definition\Builder\NodeParentInterface;
1718
use Symfony\Component\Config\Definition\Builder\TreeBuilder;
1819
use Symfony\Component\Config\Definition\ConfigurationInterface;
1920

2021
final class Configuration implements ConfigurationInterface
2122
{
23+
/**
24+
* @phpstan-return TreeBuilder<'array'>
25+
*/
2226
public function getConfigTreeBuilder(): TreeBuilder
2327
{
2428
$treeBuilder = new TreeBuilder('sylius_twig_extra');
2529

30+
/**
31+
* @var ArrayNodeDefinition $rootNode
32+
* @phpstan-var ArrayNodeDefinition<NodeParentInterface|null> $rootNode
33+
*/
2634
$rootNode = $treeBuilder->getRootNode();
2735

2836
$this->addTwigUxConfiguration($rootNode);
2937

3038
return $treeBuilder;
3139
}
3240

41+
/**
42+
* @phpstan-param ArrayNodeDefinition<NodeParentInterface|null> $rootNode
43+
*/
3344
private function addTwigUxConfiguration(ArrayNodeDefinition $rootNode): void
3445
{
3546
$rootNode

src/TwigHooks/src/DependencyInjection/Configuration.php

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,23 @@
1717
use Sylius\TwigHooks\Hookable\HookableComponent;
1818
use Sylius\TwigHooks\Hookable\HookableTemplate;
1919
use Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition;
20+
use Symfony\Component\Config\Definition\Builder\NodeParentInterface;
2021
use Symfony\Component\Config\Definition\Builder\TreeBuilder;
2122
use Symfony\Component\Config\Definition\ConfigurationInterface;
2223

2324
final class Configuration implements ConfigurationInterface
2425
{
26+
/**
27+
* @phpstan-return TreeBuilder<'array'>
28+
*/
2529
public function getConfigTreeBuilder(): TreeBuilder
2630
{
2731
$treeBuilder = new TreeBuilder('sylius_twig_hooks');
2832

33+
/**
34+
* @var ArrayNodeDefinition $rootNode
35+
* @phpstan-var ArrayNodeDefinition<NodeParentInterface|null> $rootNode
36+
*/
2937
$rootNode = $treeBuilder->getRootNode();
3038

3139
$rootNode
@@ -41,6 +49,9 @@ public function getConfigTreeBuilder(): TreeBuilder
4149
return $treeBuilder;
4250
}
4351

52+
/**
53+
* @phpstan-param ArrayNodeDefinition<NodeParentInterface|null> $rootNode
54+
*/
4455
private function addSupportedHookableTypesConfiguration(ArrayNodeDefinition $rootNode): void
4556
{
4657
$rootNode
@@ -58,6 +69,9 @@ private function addSupportedHookableTypesConfiguration(ArrayNodeDefinition $roo
5869
;
5970
}
6071

72+
/**
73+
* @phpstan-param ArrayNodeDefinition<NodeParentInterface|null> $rootNode
74+
*/
6175
private function addHooksConfiguration(ArrayNodeDefinition $rootNode): void
6276
{
6377
$rootNode

0 commit comments

Comments
 (0)