Skip to content

Commit 7803c10

Browse files
committed
Defined TParent of Symfony semantic configuration builders
1 parent 8ba1c59 commit 7803c10

30 files changed

+194
-162
lines changed

src/bundle/Core/DependencyInjection/Configuration.php

Lines changed: 47 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -10,45 +10,37 @@
1010
use Ibexa\Bundle\Core\DependencyInjection\Configuration\ParserInterface;
1111
use Ibexa\Bundle\Core\DependencyInjection\Configuration\RepositoryConfigParserInterface;
1212
use Ibexa\Bundle\Core\DependencyInjection\Configuration\SiteAccessAware\Configuration as SiteAccessConfiguration;
13-
use Ibexa\Bundle\Core\DependencyInjection\Configuration\Suggestion\Collector\SuggestionCollectorInterface;
1413
use Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition;
1514
use Symfony\Component\Config\Definition\Builder\TreeBuilder;
1615

16+
/**
17+
* @phpstan-import-type TRootNode from SiteAccessConfiguration
18+
*/
1719
class Configuration extends SiteAccessConfiguration
1820
{
19-
public const CUSTOM_TAG_ATTRIBUTE_TYPES = ['number', 'string', 'boolean', 'choice'];
20-
21-
/** @var \Ibexa\Bundle\Core\DependencyInjection\Configuration\ParserInterface */
22-
private $mainSiteAccessConfigParser;
23-
24-
/** @var \Ibexa\Bundle\Core\DependencyInjection\Configuration\RepositoryConfigParserInterface */
25-
private $mainRepositoryConfigParser;
26-
27-
/** @var \Ibexa\Bundle\Core\DependencyInjection\Configuration\Suggestion\Collector\SuggestionCollectorInterface */
28-
private $suggestionCollector;
21+
public const array CUSTOM_TAG_ATTRIBUTE_TYPES = ['number', 'string', 'boolean', 'choice'];
2922

3023
/** @var \Ibexa\Bundle\Core\SiteAccess\SiteAccessConfigurationFilter[] */
31-
private $siteAccessConfigurationFilters;
24+
private array $siteAccessConfigurationFilters;
3225

3326
public function __construct(
34-
ParserInterface $mainConfigParser,
35-
RepositoryConfigParserInterface $mainRepositoryConfigParser,
36-
SuggestionCollectorInterface $suggestionCollector
27+
private readonly ParserInterface $mainSiteAccessConfigParser,
28+
private readonly RepositoryConfigParserInterface $mainRepositoryConfigParser
3729
) {
38-
$this->mainSiteAccessConfigParser = $mainConfigParser;
39-
$this->mainRepositoryConfigParser = $mainRepositoryConfigParser;
40-
$this->suggestionCollector = $suggestionCollector;
4130
}
4231

43-
public function setSiteAccessConfigurationFilters(array $filters)
32+
/**
33+
* @param \Ibexa\Bundle\Core\SiteAccess\SiteAccessConfigurationFilter[] $filters
34+
*/
35+
public function setSiteAccessConfigurationFilters(array $filters): void
4436
{
4537
$this->siteAccessConfigurationFilters = $filters;
4638
}
4739

4840
/**
4941
* Generates the configuration tree builder.
5042
*
51-
* @return \Symfony\Component\Config\Definition\Builder\TreeBuilder The tree builder
43+
* @phpstan-return \Symfony\Component\Config\Definition\Builder\TreeBuilder<'array'> The tree builder
5244
*/
5345
public function getConfigTreeBuilder(): TreeBuilder
5446
{
@@ -57,7 +49,7 @@ public function getConfigTreeBuilder(): TreeBuilder
5749
$rootNode = $treeBuilder->getRootNode();
5850

5951
$this->addRepositoriesSection($rootNode);
60-
$this->addSiteaccessSection($rootNode);
52+
$this->addSiteAccessSection($rootNode);
6153
$this->addImageMagickSection($rootNode);
6254
$this->addHttpCacheSection($rootNode);
6355
$this->addRouterSection($rootNode);
@@ -73,7 +65,10 @@ public function getConfigTreeBuilder(): TreeBuilder
7365
return $treeBuilder;
7466
}
7567

76-
public function addRepositoriesSection(ArrayNodeDefinition $rootNode)
68+
/**
69+
* @phpstan-param TRootNode $rootNode
70+
*/
71+
public function addRepositoriesSection(ArrayNodeDefinition $rootNode): void
7772
{
7873
$repositoriesNode = $rootNode
7974
->children()
@@ -153,7 +148,10 @@ static function ($v) {
153148
);
154149
}
155150

156-
public function addSiteaccessSection(ArrayNodeDefinition $rootNode)
151+
/**
152+
* @phpstan-param TRootNode $rootNode
153+
*/
154+
public function addSiteAccessSection(ArrayNodeDefinition $rootNode): void
157155
{
158156
$rootNode
159157
->children()
@@ -253,7 +251,10 @@ static function ($v) {
253251
->end();
254252
}
255253

256-
private function addImageMagickSection(ArrayNodeDefinition $rootNode)
254+
/**
255+
* @phpstan-param TRootNode $rootNode
256+
*/
257+
private function addImageMagickSection(ArrayNodeDefinition $rootNode): void
257258
{
258259
$filtersInfo =
259260
<<<EOT
@@ -299,7 +300,10 @@ static function ($v): bool {
299300
->end();
300301
}
301302

302-
private function addHttpCacheSection(ArrayNodeDefinition $rootNode)
303+
/**
304+
* @phpstan-param TRootNode $rootNode
305+
*/
306+
private function addHttpCacheSection(ArrayNodeDefinition $rootNode): void
303307
{
304308
$purgeTypeInfo = <<<EOT
305309
Http cache purge type.
@@ -349,7 +353,10 @@ static function (): string {
349353
->end();
350354
}
351355

352-
private function addRouterSection(ArrayNodeDefinition $rootNode)
356+
/**
357+
* @phpstan-param TRootNode $rootNode
358+
*/
359+
private function addRouterSection(ArrayNodeDefinition $rootNode): void
353360
{
354361
$nonSAAwareInfo = <<<EOT
355362
Route names that are not supposed to be SiteAccess aware, i.e. Routes pointing to asset generation (like assetic).
@@ -379,9 +386,9 @@ private function addRouterSection(ArrayNodeDefinition $rootNode)
379386
/**
380387
* Defines configuration the images placeholder generation.
381388
*
382-
* @param \Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition $rootNode
389+
* @phpstan-param TRootNode $rootNode
383390
*/
384-
private function addImagePlaceholderSection(ArrayNodeDefinition $rootNode)
391+
private function addImagePlaceholderSection(ArrayNodeDefinition $rootNode): void
385392
{
386393
$rootNode
387394
->children()
@@ -421,13 +428,11 @@ private function addImagePlaceholderSection(ArrayNodeDefinition $rootNode)
421428
* cleanup_method: name_of_cleanup_method
422429
* </code>
423430
*
424-
* @param \Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition $rootNode
425-
*
426-
* @return \Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition
431+
* @phpstan-param TRootNode $rootNode
427432
*/
428-
private function addUrlAliasSection(ArrayNodeDefinition $rootNode)
433+
private function addUrlAliasSection(ArrayNodeDefinition $rootNode): void
429434
{
430-
return $rootNode
435+
$rootNode
431436
->children()
432437
->arrayNode('url_alias')
433438
->children()
@@ -462,13 +467,11 @@ private function addUrlAliasSection(ArrayNodeDefinition $rootNode)
462467
* enabled: true
463468
* </code>
464469
*
465-
* @param \Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition $rootNode
466-
*
467-
* @return \Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition
470+
* @phpstan-param TRootNode $rootNode
468471
*/
469-
private function addUrlWildcardsSection($rootNode): ArrayNodeDefinition
472+
private function addUrlWildcardsSection(ArrayNodeDefinition $rootNode): void
470473
{
471-
return $rootNode
474+
$rootNode
472475
->children()
473476
->arrayNode('url_wildcards')
474477
->children()
@@ -497,13 +500,11 @@ private function addUrlWildcardsSection($rootNode): ArrayNodeDefinition
497500
*
498501
* </code>
499502
*
500-
* @param \Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition $rootNode
501-
*
502-
* @return \Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition
503+
* @phpstan-param TRootNode $rootNode
503504
*/
504-
private function addOrmSection($rootNode): ArrayNodeDefinition
505+
private function addOrmSection(ArrayNodeDefinition $rootNode): void
505506
{
506-
return $rootNode
507+
$rootNode
507508
->children()
508509
->arrayNode('orm')
509510
->children()
@@ -544,11 +545,11 @@ private function addOrmSection($rootNode): ArrayNodeDefinition
544545
*
545546
* </code>
546547
*
547-
* @param \Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition $rootNode
548+
* @phpstan-param TRootNode $rootNode
548549
*/
549-
private function addUITranslationsSection($rootNode): ArrayNodeDefinition
550+
private function addUITranslationsSection(ArrayNodeDefinition $rootNode): void
550551
{
551-
return $rootNode
552+
$rootNode
552553
->children()
553554
->arrayNode('ui')
554555
->children()

src/bundle/Core/DependencyInjection/Configuration/AbstractParser.php

Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -11,34 +11,10 @@
1111

1212
abstract class AbstractParser implements ParserInterface
1313
{
14-
/**
15-
* This method is called by the ConfigurationProcessor before looping over available scopes.
16-
* You may here use $contextualizer->mapConfigArray().
17-
*
18-
* @see ConfigurationProcessor::mapConfig()
19-
* @see \Ibexa\Bundle\Core\DependencyInjection\Configuration\SiteAccessAware\ContextualizerInterface::mapConfigArray()
20-
*
21-
* @param array $config Complete parsed semantic configuration
22-
* @param \Ibexa\Bundle\Core\DependencyInjection\Configuration\SiteAccessAware\ContextualizerInterface $contextualizer
23-
*
24-
* @return mixed
25-
*/
2614
public function preMap(array $config, ContextualizerInterface $contextualizer)
2715
{
2816
}
2917

30-
/**
31-
* This method is called by the ConfigurationProcessor after looping over available scopes.
32-
* You may here use $contextualizer->mapConfigArray().
33-
*
34-
* @see ConfigurationProcessor::mapConfig()
35-
* @see \Ibexa\Bundle\Core\DependencyInjection\Configuration\SiteAccessAware\ContextualizerInterface::mapConfigArray()
36-
*
37-
* @param array $config Complete parsed semantic configuration
38-
* @param \Ibexa\Bundle\Core\DependencyInjection\Configuration\SiteAccessAware\ContextualizerInterface $contextualizer
39-
*
40-
* @return mixed
41-
*/
4218
public function postMap(array $config, ContextualizerInterface $contextualizer)
4319
{
4420
}

src/bundle/Core/DependencyInjection/Configuration/ConfigParser.php

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,13 @@
1818
class ConfigParser implements ParserInterface
1919
{
2020
/** @var \Ibexa\Bundle\Core\DependencyInjection\Configuration\ParserInterface[] */
21-
private $configParsers;
21+
private array $configParsers;
2222

23+
/**
24+
* @param \Ibexa\Bundle\Core\DependencyInjection\Configuration\ParserInterface[] $configParsers
25+
*
26+
* @throws \Ibexa\Contracts\Core\Repository\Exceptions\InvalidArgumentException
27+
*/
2328
public function __construct(array $configParsers = [])
2429
{
2530
foreach ($configParsers as $parser) {
@@ -38,7 +43,7 @@ public function __construct(array $configParsers = [])
3843
/**
3944
* @param \Ibexa\Bundle\Core\DependencyInjection\Configuration\ParserInterface[] $configParsers
4045
*/
41-
public function setConfigParsers($configParsers)
46+
public function setConfigParsers(array $configParsers): void
4247
{
4348
$this->configParsers = $configParsers;
4449
}
@@ -58,21 +63,21 @@ public function mapConfig(array &$scopeSettings, $currentScope, ContextualizerIn
5863
}
5964
}
6065

61-
public function preMap(array $config, ContextualizerInterface $contextualizer)
66+
public function preMap(array $config, ContextualizerInterface $contextualizer): void
6267
{
6368
foreach ($this->configParsers as $parser) {
6469
$parser->preMap($config, $contextualizer);
6570
}
6671
}
6772

68-
public function postMap(array $config, ContextualizerInterface $contextualizer)
73+
public function postMap(array $config, ContextualizerInterface $contextualizer): void
6974
{
7075
foreach ($this->configParsers as $parser) {
7176
$parser->postMap($config, $contextualizer);
7277
}
7378
}
7479

75-
public function addSemanticConfig(NodeBuilder $nodeBuilder)
80+
public function addSemanticConfig(NodeBuilder $nodeBuilder): void
7681
{
7782
$fieldTypeNodeBuilder = $nodeBuilder
7883
->arrayNode('fieldtypes')

src/bundle/Core/DependencyInjection/Configuration/FieldTypeParserInterface.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ public function getFieldTypeIdentifier();
2222
/**
2323
* Adds fieldType semantic configuration definition.
2424
*
25-
* @param \Symfony\Component\Config\Definition\Builder\NodeBuilder $nodeBuilder Node just under ibexa.system.<site_access>.fieldtypes.<identifier>
25+
* @phpstan-param \Symfony\Component\Config\Definition\Builder\NodeBuilder<null> $nodeBuilder Node just under ibexa.system.<site_access>.fieldtypes.<identifier>
2626
*/
2727
public function addFieldTypeSemanticConfig(NodeBuilder $nodeBuilder);
2828
}

src/bundle/Core/DependencyInjection/Configuration/Parser/AbstractFieldTypeParser.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
*/
1818
abstract class AbstractFieldTypeParser extends AbstractParser implements FieldTypeParserInterface
1919
{
20-
public function addSemanticConfig(NodeBuilder $nodeBuilder)
20+
public function addSemanticConfig(NodeBuilder $nodeBuilder): void
2121
{
2222
$fieldTypeNodeBuilder = $nodeBuilder->arrayNode($this->getFieldTypeIdentifier())->children();
2323

src/bundle/Core/DependencyInjection/Configuration/Parser/Common.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ public function addSemanticConfig(NodeBuilder $nodeBuilder): void
102102
->end();
103103
}
104104

105-
public function preMap(array $config, ContextualizerInterface $contextualizer)
105+
public function preMap(array $config, ContextualizerInterface $contextualizer): void
106106
{
107107
$contextualizer->mapConfigArray('session', $config);
108108
}

src/bundle/Core/DependencyInjection/Configuration/Parser/Content.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
*/
1717
class Content extends AbstractParser
1818
{
19-
public function addSemanticConfig(NodeBuilder $nodeBuilder)
19+
public function addSemanticConfig(NodeBuilder $nodeBuilder): void
2020
{
2121
$nodeBuilder
2222
->arrayNode('content')

src/bundle/Core/DependencyInjection/Configuration/Parser/ContentView.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,6 @@
99

1010
class ContentView extends View
1111
{
12-
public const NODE_KEY = 'content_view';
13-
public const INFO = 'Template selection settings when displaying a content';
12+
public const string NODE_KEY = 'content_view';
13+
public const string INFO = 'Template selection settings when displaying a content';
1414
}

src/bundle/Core/DependencyInjection/Configuration/Parser/FieldType/ImageAsset.php

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,6 @@ public function getFieldTypeIdentifier(): string
2323
return ImageAssetFieldType::FIELD_TYPE_IDENTIFIER;
2424
}
2525

26-
/**
27-
* {@inheritdoc}
28-
*/
2926
public function addFieldTypeSemanticConfig(NodeBuilder $nodeBuilder): void
3027
{
3128
$nodeBuilder

src/bundle/Core/DependencyInjection/Configuration/Parser/IO.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ public function __construct(ComplexSettingParserInterface $complexSettingParser)
2323
$this->complexSettingParser = $complexSettingParser;
2424
}
2525

26-
public function addSemanticConfig(NodeBuilder $nodeBuilder)
26+
public function addSemanticConfig(NodeBuilder $nodeBuilder): void
2727
{
2828
$nodeBuilder
2929
->arrayNode('io')
@@ -85,7 +85,7 @@ public function mapConfig(array &$scopeSettings, $currentScope, ContextualizerIn
8585
/**
8686
* Post process configuration to add io_root_dir and io_prefix.
8787
*/
88-
public function postMap(array $config, ContextualizerInterface $contextualizer)
88+
public function postMap(array $config, ContextualizerInterface $contextualizer): void
8989
{
9090
$container = $contextualizer->getContainer();
9191

0 commit comments

Comments
 (0)