Skip to content

Commit 32fd66a

Browse files
committed
allow Symfony 8
1 parent eabe078 commit 32fd66a

File tree

10 files changed

+188
-144
lines changed

10 files changed

+188
-144
lines changed

.github/workflows/build.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,9 @@ jobs:
4141
- description: 'Lowest deps'
4242
php: '8.1'
4343
composer_option: '--prefer-lowest'
44-
- description: 'Symfony 5.4'
44+
- description: 'Symfony 6.4'
4545
php: '8.1'
46-
symfony: 5.4.*
46+
symfony: 6.4.*
4747
- description: 'Symfony 7'
4848
php: '8.2'
4949
symfony: ^7.2

.php-cs-fixer.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
'@PHPUnit75Migration:risky' => true,
1616
'ordered_imports' => true,
1717
'declare_strict_types' => false,
18-
'native_function_invocation' => ['include' => ['@all']],
18+
'native_function_invocation' => ['include' => ['@internal']],
1919
])
2020
->setFinder($finder)
2121
;

composer.json

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,16 +21,16 @@
2121
"require": {
2222
"php": "^8.1",
2323
"knplabs/knp-menu": "^3.8",
24-
"symfony/config": "^5.4 | ^6.0 | ^7.0",
25-
"symfony/dependency-injection": "^5.4 | ^6.0 | ^7.0",
24+
"symfony/config": "^6.4 | ^7.0 | ^8.0",
25+
"symfony/dependency-injection": "^6.4 | ^7.0 | ^8.0",
2626
"symfony/deprecation-contracts": "^2.5 | ^3.3",
27-
"symfony/http-kernel": "^5.4 | ^6.0 | ^7.0"
27+
"symfony/http-kernel": "^6.4 | ^7.0 | ^8.0"
2828
},
2929
"require-dev": {
30-
"phpunit/phpunit": "^10.5 | ^11.5 | ^12.1",
31-
"symfony/expression-language": "^5.4 | ^6.0 | ^7.0",
32-
"symfony/phpunit-bridge": "^6.0 | ^7.0",
33-
"symfony/templating": "^5.4 | ^6.0 | ^7.0"
30+
"phpunit/phpunit": "^10.5 | ^11.5 | ^12.4",
31+
"symfony/expression-language": "^6.4 | ^7.0 | ^8.0",
32+
"symfony/phpunit-bridge": "^7.0 | ^8.0",
33+
"symfony/templating": "^6.4 | ^7.0 | ^8.0"
3434
},
3535
"autoload": {
3636
"psr-4": { "Knp\\Bundle\\MenuBundle\\": "src" }

config/menu.php

Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
<?php
2+
3+
namespace Symfony\Component\DependencyInjection\Loader\Configurator;
4+
5+
use Knp\Bundle\MenuBundle\Provider\BuilderAliasProvider;
6+
use Knp\Menu\FactoryInterface;
7+
use Knp\Menu\Integration\Symfony\RoutingExtension;
8+
use Knp\Menu\Matcher\Matcher;
9+
use Knp\Menu\Matcher\MatcherInterface;
10+
use Knp\Menu\Matcher\Voter\CallbackVoter;
11+
use Knp\Menu\Matcher\Voter\RouteVoter;
12+
use Knp\Menu\MenuFactory;
13+
use Knp\Menu\Provider\ChainProvider;
14+
use Knp\Menu\Provider\LazyProvider;
15+
use Knp\Menu\Provider\MenuProviderInterface;
16+
use Knp\Menu\Renderer\ListRenderer;
17+
use Knp\Menu\Renderer\PsrProvider;
18+
use Knp\Menu\Twig\Helper;
19+
use Knp\Menu\Util\MenuManipulator;
20+
use Symfony\Component\DependencyInjection\Argument\ServiceLocatorArgument;
21+
use Symfony\Component\DependencyInjection\Argument\TaggedIteratorArgument;
22+
23+
return static function (ContainerConfigurator $configurator): void {
24+
$configurator->parameters()->set('knp_menu.renderer.list.options', []);
25+
26+
$services = $configurator->services();
27+
28+
$services
29+
->set('knp_menu.factory', MenuFactory::class)
30+
->public()
31+
;
32+
33+
$services
34+
->set('knp_menu.factory_extension.routing', RoutingExtension::class)
35+
->arg(0, service('router'))
36+
->tag('knp_menu.factory_extension')
37+
;
38+
39+
$services
40+
->set('knp_menu.helper', Helper::class)
41+
->args([
42+
service('knp_menu.renderer_provider'),
43+
service('knp_menu.menu_provider'),
44+
service('knp_menu.manipulator'),
45+
service('knp_menu.matcher'),
46+
])
47+
;
48+
49+
$services
50+
->set('knp_menu.matcher', Matcher::class)
51+
->public()
52+
->arg(0, new TaggedIteratorArgument('knp_menu.voter'))
53+
->tag('kernel.reset', ['method' => 'clear'])
54+
;
55+
56+
$services
57+
->set(MenuProviderInterface::class, service('knp_menu.menu_provider'))
58+
;
59+
60+
$services
61+
->set('knp_menu.menu_provider.chain', ChainProvider::class)
62+
->arg(0, new TaggedIteratorArgument('knp_menu.provider'))
63+
;
64+
65+
$services
66+
->set('knp_menu.menu_provider.lazy', LazyProvider::class)
67+
->arg(0, [])
68+
->tag('knp_menu.provider')
69+
;
70+
71+
$services
72+
->set('knp_menu.menu_provider.builder_alias', BuilderAliasProvider::class)
73+
->args([
74+
service('kernel'),
75+
service('service_container'),
76+
service('knp_menu.factory'),
77+
])
78+
;
79+
80+
$services
81+
->set('knp_menu.renderer_provider', PsrProvider::class)
82+
->args([
83+
new ServiceLocatorArgument(new TaggedIteratorArgument('knp_menu.renderer', null, 'alias')),
84+
'%knp_menu.default_renderer%',
85+
]);
86+
87+
$services
88+
->set('knp_menu.renderer.list', ListRenderer::class)
89+
->tag('knp_menu.renderer', ['alias' => 'list'])
90+
->args([
91+
service('knp_menu.matcher'),
92+
'%knp_menu.renderer.list.options%',
93+
'%kernel.charset%',
94+
]);
95+
96+
$services
97+
->set('knp_menu.voter.callback', CallbackVoter::class)
98+
->tag('knp_menu.voter');
99+
100+
$services
101+
->set('knp_menu.voter.router', RouteVoter::class)
102+
->arg(0, service('request_stack'))
103+
->tag('knp_menu.voter');
104+
105+
$services
106+
->set('knp_menu.manipulator', MenuManipulator::class)
107+
;
108+
109+
// Autowiring aliases
110+
$services->set(FactoryInterface::class, service('knp_menu.factory'));
111+
$services->set(MatcherInterface::class, service('knp_menu.matcher'));
112+
$services->set(MenuManipulator::class, service('knp_menu.manipulator'));
113+
};

config/menu.xml

Lines changed: 0 additions & 77 deletions
This file was deleted.

config/templating.php

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
<?php
2+
3+
namespace Symfony\Component\DependencyInjection\Loader\Configurator;
4+
5+
use Knp\Bundle\MenuBundle\Templating\Helper\MenuHelper;
6+
7+
return static function (ContainerConfigurator $configurator): void {
8+
$configurator->parameters()->set('knp_menu.templating.helper.class', MenuHelper::class);
9+
10+
$configurator
11+
->services()
12+
->set('knp_menu.templating.helper', '%knp_menu.templating.helper.class%')
13+
->tag('templating.helper', ['alias' => 'knp_menu'])
14+
->args([
15+
service('knp_menu.helper'),
16+
service('knp_menu.matcher'),
17+
service('knp_menu.manipulator'),
18+
])
19+
;
20+
};

config/templating.xml

Lines changed: 0 additions & 20 deletions
This file was deleted.

config/twig.php

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
<?php
2+
3+
namespace Symfony\Component\DependencyInjection\Loader\Configurator;
4+
5+
use Knp\Menu\Renderer\TwigRenderer;
6+
use Knp\Menu\Twig\MenuExtension;
7+
use Knp\Menu\Twig\MenuRuntimeExtension;
8+
9+
return static function (ContainerConfigurator $configurator): void {
10+
$configurator->parameters()->set('knp_menu.renderer.twig.options', []);
11+
12+
$services = $configurator->services();
13+
14+
$services
15+
->set('knp_menu.twig.extension', MenuExtension::class)
16+
->tag('twig.extension')
17+
;
18+
19+
$services
20+
->set('knp_menu.twig.runtime', MenuRuntimeExtension::class)
21+
->tag('twig.runtime')
22+
->args([
23+
service('knp_menu.helper'),
24+
service('knp_menu.matcher'),
25+
service('knp_menu.manipulator'),
26+
])
27+
;
28+
29+
$services
30+
->set('knp_menu.renderer.twig', TwigRenderer::class)
31+
->tag('knp_menu.renderer', ['alias' => 'twig'])
32+
->args([
33+
service('twig'),
34+
'%knp_menu.renderer.twig.template%',
35+
service('knp_menu.matcher'),
36+
'%knp_menu.renderer.twig.options%',
37+
])
38+
;
39+
};

config/twig.xml

Lines changed: 0 additions & 31 deletions
This file was deleted.

src/DependencyInjection/KnpMenuExtension.php

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,14 @@
1111
use Symfony\Component\DependencyInjection\ContainerBuilder;
1212
use Symfony\Component\DependencyInjection\Extension\Extension;
1313
use Symfony\Component\DependencyInjection\Extension\PrependExtensionInterface;
14-
use Symfony\Component\DependencyInjection\Loader\XmlFileLoader;
14+
use Symfony\Component\DependencyInjection\Loader\PhpFileLoader;
1515

1616
class KnpMenuExtension extends Extension implements PrependExtensionInterface
1717
{
1818
public function load(array $configs, ContainerBuilder $container): void
1919
{
20-
$loader = new XmlFileLoader($container, new FileLocator(__DIR__.'/../../config'));
21-
$loader->load('menu.xml');
20+
$loader = new PhpFileLoader($container, new FileLocator(__DIR__.'/../../config'));
21+
$loader->load('menu.php');
2222

2323
$configuration = new Configuration();
2424
$config = $this->processConfiguration($configuration, $configs);
@@ -30,12 +30,12 @@ public function load(array $configs, ContainerBuilder $container): void
3030
}
3131

3232
if (isset($config['twig'])) {
33-
$loader->load('twig.xml');
33+
$loader->load('twig.php');
3434
$container->setParameter('knp_menu.renderer.twig.template', $config['twig']['template']);
3535
}
3636
if ($config['templating']) {
37-
\trigger_deprecation('knplabs/knp-menu-bundle', '3.3', 'Using the templating component is deprecated since version 3.3, this option will be removed in version 4.');
38-
$loader->load('templating.xml');
37+
trigger_deprecation('knplabs/knp-menu-bundle', '3.3', 'Using the templating component is deprecated since version 3.3, this option will be removed in version 4.');
38+
$loader->load('templating.php');
3939
}
4040

4141
$container->setParameter('knp_menu.default_renderer', $config['default_renderer']);

0 commit comments

Comments
 (0)