Skip to content

Commit dc4218d

Browse files
authored
Prepare Symfony 7.4/8.0 compatibility (#45)
This raises many of the minimum dependency requirements and converts the service configuration file to PHP, in order to prepare for the upcoming Symfony 7.4/8.0 release.
1 parent 2a3155e commit dc4218d

File tree

4 files changed

+76
-70
lines changed

4 files changed

+76
-70
lines changed

composer.json

Lines changed: 12 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -8,29 +8,23 @@
88
},
99

1010
"require": {
11-
"php": "^7.2|8.0.*|8.1.*|8.2.*|8.3.*",
11+
"php": ">= 8.1",
1212
"ext-json": "*",
13-
"psr/container": "^1.0",
13+
"psr/container": "^1.0|^2.0",
1414
"psr/log": "^1.1|^2.0|^3.0",
15-
"symfony/config": "^4.0|^5.0|^6.0|^7.0",
16-
"symfony/console": "^4.0|^5.0|^6.0|^7.0",
17-
"symfony/dependency-injection": "^4.2|^5.0|^6.0|^7.0",
18-
"symfony/event-dispatcher": "^4.3|^5.0|^6.0|^7.0",
19-
"symfony/event-dispatcher-contracts": "^1.0|^2.0|^3.0",
20-
"symfony/http-foundation": "^5.3|^6.0|^7.0",
21-
"symfony/http-kernel": "^4.0|^5.0|^6.0|^7.0",
22-
"symfony/proxy-manager-bridge": "^4.0|^5.0|^6.0|^7.0",
23-
"symfony/service-contracts": "^1.0|^2.0|^3.0",
24-
"twig/twig": "^1.36|^2.6|^3.0"
15+
"symfony/config": "^6.4|^7.0",
16+
"symfony/console": "^6.4|^7.0",
17+
"symfony/dependency-injection": "^6.4|^7.0",
18+
"symfony/event-dispatcher": "^6.4|^7.0",
19+
"symfony/event-dispatcher-contracts": "^2.5|^3.0",
20+
"symfony/http-foundation": "^6.4|^7.0",
21+
"symfony/http-kernel": "^6.4|^7.0",
22+
"symfony/service-contracts": "^2.5|^3.0",
23+
"twig/twig": "^2.13|^3.0"
2524
},
2625

2726
"require-dev": {
28-
"symfony/stopwatch": "^5.4|^6.0|^7.0"
29-
},
30-
31-
"suggest": {
32-
"symfony/stopwatch": "um zu messen, wie lange der Aufbau des NavigationTree dauert",
33-
"ocramius/proxy-manager": "damit der NavigationTree wirklich lazy erzeugt wird"
27+
"symfony/stopwatch": "^6.4|^7.0"
3428
},
3529

3630
"config": {

src/DependencyInjection/WebfactoryNavigationExtension.php

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

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

src/Resources/config/services.php

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
<?php
2+
3+
namespace Symfony\Component\DependencyInjection\Loader\Configurator;
4+
5+
return static function (ContainerConfigurator $container) {
6+
$services = $container->services();
7+
8+
$services->defaults()
9+
->private()
10+
->autowire()
11+
->autoconfigure();
12+
13+
$services->set(\Webfactory\Bundle\NavigationBundle\Build\BuildDispatcher::class)
14+
->share(false);
15+
16+
$services->alias('webfactory_navigation.tree_factory.dispatcher', \Webfactory\Bundle\NavigationBundle\Build\BuildDispatcher::class)
17+
->public();
18+
19+
$services->set(\Webfactory\Bundle\NavigationBundle\Build\TreeFactory::class)
20+
->lazy()
21+
->args([
22+
service('config_cache_factory'),
23+
'%kernel.cache_dir%/webfactory_navigation/tree.php',
24+
service(\Psr\Container\ContainerInterface::class),
25+
service('event_dispatcher'),
26+
service('logger')->nullOnInvalid(),
27+
service('debug.stopwatch')->nullOnInvalid(),
28+
])
29+
->tag('monolog.logger', ['channel' => 'webfactory_navigation'])
30+
->tag('container.service_subscriber');
31+
32+
$services->alias('webfactory_navigation.tree_factory', \Webfactory\Bundle\NavigationBundle\Build\TreeFactory::class)
33+
->public();
34+
35+
$services->set(\Webfactory\Bundle\NavigationBundle\Tree\Tree::class)
36+
->lazy()
37+
->factory([service(\Webfactory\Bundle\NavigationBundle\Build\TreeFactory::class), 'getTree']);
38+
39+
$services->alias('webfactory_navigation.tree', \Webfactory\Bundle\NavigationBundle\Tree\Tree::class)
40+
->public();
41+
42+
$services->set(\Webfactory\Bundle\NavigationBundle\Event\ActiveNodeEventListener::class)
43+
->tag('kernel.event_listener', ['event' => 'webfactory_navigation.tree_initialized', 'method' => 'initializeTree']);
44+
45+
$services->alias('webfactory_navigation.event.active_node_event_listener', \Webfactory\Bundle\NavigationBundle\Event\ActiveNodeEventListener::class);
46+
47+
$services->set(\Webfactory\Bundle\NavigationBundle\Twig\NavigationExtension::class)
48+
->tag('twig.extension');
49+
50+
$services->alias('webfactory_navigation.twig_extension', \Webfactory\Bundle\NavigationBundle\Twig\NavigationExtension::class);
51+
52+
$services->set(\Webfactory\Bundle\NavigationBundle\Command\DumpTreeCommand::class)
53+
->tag('console.command');
54+
55+
$services->alias('webfactory_navigation.command.dump_tree_command', \Webfactory\Bundle\NavigationBundle\Command\DumpTreeCommand::class);
56+
57+
$services->set(\Webfactory\Bundle\NavigationBundle\Command\LookupNodeCommand::class)
58+
->tag('console.command');
59+
60+
$services->alias('webfactory_navigation.command.lookup_node_command', \Webfactory\Bundle\NavigationBundle\Command\LookupNodeCommand::class);
61+
};

src/Resources/config/services.xml

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

0 commit comments

Comments
 (0)