From 2b209e599e54f1b546853424bc88bd134f75e890 Mon Sep 17 00:00:00 2001 From: Matthias Pigulla Date: Mon, 17 Nov 2025 19:57:00 +0100 Subject: [PATCH 1/2] Prepare Symfony 7.4/8.0 compatibility --- composer.json | 30 ++++----- .../WebfactoryNavigationExtension.php | 5 +- src/Resources/config/services.php | 61 +++++++++++++++++++ src/Resources/config/services.xml | 49 --------------- 4 files changed, 76 insertions(+), 69 deletions(-) create mode 100644 src/Resources/config/services.php delete mode 100644 src/Resources/config/services.xml diff --git a/composer.json b/composer.json index dee3525..380593f 100644 --- a/composer.json +++ b/composer.json @@ -8,29 +8,23 @@ }, "require": { - "php": "^7.2|8.0.*|8.1.*|8.2.*|8.3.*", + "php": ">= 8.1", "ext-json": "*", - "psr/container": "^1.0", + "psr/container": "^1.0|^2.0", "psr/log": "^1.1|^2.0|^3.0", - "symfony/config": "^4.0|^5.0|^6.0|^7.0", - "symfony/console": "^4.0|^5.0|^6.0|^7.0", - "symfony/dependency-injection": "^4.2|^5.0|^6.0|^7.0", - "symfony/event-dispatcher": "^4.3|^5.0|^6.0|^7.0", - "symfony/event-dispatcher-contracts": "^1.0|^2.0|^3.0", - "symfony/http-foundation": "^5.3|^6.0|^7.0", - "symfony/http-kernel": "^4.0|^5.0|^6.0|^7.0", - "symfony/proxy-manager-bridge": "^4.0|^5.0|^6.0|^7.0", - "symfony/service-contracts": "^1.0|^2.0|^3.0", - "twig/twig": "^1.36|^2.6|^3.0" + "symfony/config": "^6.4|^7.0", + "symfony/console": "^6.4|^7.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/event-dispatcher": "^6.4|^7.0", + "symfony/event-dispatcher-contracts": "^2.5|^3.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/service-contracts": "^2.5|^3.0", + "twig/twig": "^2.13|^3.0" }, "require-dev": { - "symfony/stopwatch": "^5.4|^6.0|^7.0" - }, - - "suggest": { - "symfony/stopwatch": "um zu messen, wie lange der Aufbau des NavigationTree dauert", - "ocramius/proxy-manager": "damit der NavigationTree wirklich lazy erzeugt wird" + "symfony/stopwatch": "^6.4|^7.0" }, "config": { diff --git a/src/DependencyInjection/WebfactoryNavigationExtension.php b/src/DependencyInjection/WebfactoryNavigationExtension.php index 81bbaec..0c5e80d 100644 --- a/src/DependencyInjection/WebfactoryNavigationExtension.php +++ b/src/DependencyInjection/WebfactoryNavigationExtension.php @@ -11,13 +11,14 @@ use Symfony\Component\Config\FileLocator; use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\Extension\Extension; +use Symfony\Component\DependencyInjection\Loader\PhpFileLoader; use Symfony\Component\DependencyInjection\Loader\XmlFileLoader; class WebfactoryNavigationExtension extends Extension { public function load(array $configs, ContainerBuilder $container): void { - $loader = new XmlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config')); - $loader->load('services.xml'); + $loader = new PhpFileLoader($container, new FileLocator(__DIR__.'/../Resources/config')); + $loader->load('services.php'); } } diff --git a/src/Resources/config/services.php b/src/Resources/config/services.php new file mode 100644 index 0000000..696e3c3 --- /dev/null +++ b/src/Resources/config/services.php @@ -0,0 +1,61 @@ +services(); + + $services->defaults() + ->private() + ->autowire() + ->autoconfigure(); + + $services->set(\Webfactory\Bundle\NavigationBundle\Build\BuildDispatcher::class) + ->share(false); + + $services->alias('webfactory_navigation.tree_factory.dispatcher', \Webfactory\Bundle\NavigationBundle\Build\BuildDispatcher::class) + ->public(); + + $services->set(\Webfactory\Bundle\NavigationBundle\Build\TreeFactory::class) + ->lazy() + ->args([ + service('config_cache_factory'), + '%kernel.cache_dir%/webfactory_navigation/tree.php', + service(\Psr\Container\ContainerInterface::class), + service('event_dispatcher'), + service('logger')->nullOnInvalid(), + service('debug.stopwatch')->nullOnInvalid(), + ]) + ->tag('monolog.logger', ['channel' => 'webfactory_navigation']) + ->tag('container.service_subscriber'); + + $services->alias('webfactory_navigation.tree_factory', \Webfactory\Bundle\NavigationBundle\Build\TreeFactory::class) + ->public(); + + $services->set(\Webfactory\Bundle\NavigationBundle\Tree\Tree::class) + ->lazy() + ->factory([service(\Webfactory\Bundle\NavigationBundle\Build\TreeFactory::class), 'getTree']); + + $services->alias('webfactory_navigation.tree', \Webfactory\Bundle\NavigationBundle\Tree\Tree::class) + ->public(); + + $services->set(\Webfactory\Bundle\NavigationBundle\Event\ActiveNodeEventListener::class) + ->tag('kernel.event_listener', ['event' => 'webfactory_navigation.tree_initialized', 'method' => 'initializeTree']); + + $services->alias('webfactory_navigation.event.active_node_event_listener', \Webfactory\Bundle\NavigationBundle\Event\ActiveNodeEventListener::class); + + $services->set(\Webfactory\Bundle\NavigationBundle\Twig\NavigationExtension::class) + ->tag('twig.extension'); + + $services->alias('webfactory_navigation.twig_extension', \Webfactory\Bundle\NavigationBundle\Twig\NavigationExtension::class); + + $services->set(\Webfactory\Bundle\NavigationBundle\Command\DumpTreeCommand::class) + ->tag('console.command'); + + $services->alias('webfactory_navigation.command.dump_tree_command', \Webfactory\Bundle\NavigationBundle\Command\DumpTreeCommand::class); + + $services->set(\Webfactory\Bundle\NavigationBundle\Command\LookupNodeCommand::class) + ->tag('console.command'); + + $services->alias('webfactory_navigation.command.lookup_node_command', \Webfactory\Bundle\NavigationBundle\Command\LookupNodeCommand::class); +}; diff --git a/src/Resources/config/services.xml b/src/Resources/config/services.xml deleted file mode 100644 index 9f30640..0000000 --- a/src/Resources/config/services.xml +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - - - - - - - %kernel.cache_dir%/webfactory_navigation/tree.php - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - From 0b23a572210dc55469397da2b9f4253b233fb2bd Mon Sep 17 00:00:00 2001 From: mpdude <1202333+mpdude@users.noreply.github.com> Date: Mon, 17 Nov 2025 18:58:19 +0000 Subject: [PATCH 2/2] Fix CS with PHP-CS-Fixer --- src/DependencyInjection/WebfactoryNavigationExtension.php | 1 - src/Resources/config/services.php | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/DependencyInjection/WebfactoryNavigationExtension.php b/src/DependencyInjection/WebfactoryNavigationExtension.php index 0c5e80d..9e05778 100644 --- a/src/DependencyInjection/WebfactoryNavigationExtension.php +++ b/src/DependencyInjection/WebfactoryNavigationExtension.php @@ -12,7 +12,6 @@ use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\Extension\Extension; use Symfony\Component\DependencyInjection\Loader\PhpFileLoader; -use Symfony\Component\DependencyInjection\Loader\XmlFileLoader; class WebfactoryNavigationExtension extends Extension { diff --git a/src/Resources/config/services.php b/src/Resources/config/services.php index 696e3c3..faec7f5 100644 --- a/src/Resources/config/services.php +++ b/src/Resources/config/services.php @@ -2,7 +2,7 @@ namespace Symfony\Component\DependencyInjection\Loader\Configurator; -return static function(ContainerConfigurator $container) { +return static function (ContainerConfigurator $container) { $services = $container->services(); $services->defaults()