From ed93e2bfa37f64f0a1bfdc9ff8012e37f04ed4c3 Mon Sep 17 00:00:00 2001 From: Toon Verwerft Date: Fri, 13 Feb 2026 08:39:47 +0100 Subject: [PATCH] Drop XML config --- composer.json | 12 ++--- config/services.php | 45 +++++++++++++++++++ config/services.xml | 27 ----------- .../ApiProblemExtension.php | 4 +- .../ApiProblemExtensionTest.php | 3 +- 5 files changed, 55 insertions(+), 36 deletions(-) create mode 100644 config/services.php delete mode 100644 config/services.xml diff --git a/composer.json b/composer.json index af2f776..697bb3c 100644 --- a/composer.json +++ b/composer.json @@ -17,12 +17,12 @@ "symfony/http-kernel": "^6.4 || ^7.4 || ^8.0" }, "require-dev": { - "matthiasnoback/symfony-dependency-injection-test": "^4.3", - "php-cs-fixer/shim": "^3.88", - "phpro/grumphp-shim": "^2.17", - "phpspec/prophecy": "^1.17", - "phpspec/prophecy-phpunit": "^2.0", - "phpunit/phpunit": "^12.4", + "matthiasnoback/symfony-dependency-injection-test": "^6.2", + "php-cs-fixer/shim": "^3.94", + "phpro/grumphp-shim": "^2.19", + "phpspec/prophecy": "^1.25", + "phpspec/prophecy-phpunit": "^2.5", + "phpunit/phpunit": "^12.5", "symfony/security-core": "^6.4 || ^7.4 || ^8.0" }, "config": { diff --git a/config/services.php b/config/services.php new file mode 100644 index 0000000..498e5a8 --- /dev/null +++ b/config/services.php @@ -0,0 +1,45 @@ +services(); + + $services->set(JsonApiProblemExceptionListener::class) + ->class(JsonApiProblemExceptionListener::class) + ->args([ + '$exceptionTransformer' => service(Chain::class), + '$debug' => param('kernel.debug'), + ]) + ->tag('kernel.event_listener', [ + 'event' => 'kernel.exception', + 'method' => 'onKernelException', + 'priority' => -5, + ]); + + $services->set(Chain::class) + ->class(Chain::class) + ->args([ + tagged_iterator('phpro.api_problem.exception_transformer'), + ]); + + $services->set(ApiProblemExceptionTransformer::class) + ->class(ApiProblemExceptionTransformer::class) + ->tag('phpro.api_problem.exception_transformer'); + + $services->set(HttpExceptionTransformer::class) + ->class(HttpExceptionTransformer::class) + ->tag('phpro.api_problem.exception_transformer'); + + $services->set(SecurityExceptionTransformer::class) + ->class(SecurityExceptionTransformer::class) + ->tag('phpro.api_problem.exception_transformer'); +}; \ No newline at end of file diff --git a/config/services.xml b/config/services.xml deleted file mode 100644 index a02c4ee..0000000 --- a/config/services.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - %kernel.debug% - - - - - - - - - - - - - - - - diff --git a/src/DependencyInjection/ApiProblemExtension.php b/src/DependencyInjection/ApiProblemExtension.php index e85575e..38f3de7 100644 --- a/src/DependencyInjection/ApiProblemExtension.php +++ b/src/DependencyInjection/ApiProblemExtension.php @@ -13,7 +13,7 @@ class ApiProblemExtension extends Extension { public function load(array $configs, ContainerBuilder $container): void { - $loader = new Loader\XmlFileLoader($container, new FileLocator(__DIR__.'/../../config')); - $loader->load('services.xml'); + $loader = new Loader\PhpFileLoader($container, new FileLocator(__DIR__.'/../../config')); + $loader->load('services.php'); } } diff --git a/test/DependencyInjection/ApiProblemExtensionTest.php b/test/DependencyInjection/ApiProblemExtensionTest.php index 70c7cd9..5ca3ce1 100644 --- a/test/DependencyInjection/ApiProblemExtensionTest.php +++ b/test/DependencyInjection/ApiProblemExtensionTest.php @@ -11,6 +11,7 @@ use PHPUnit\Framework\Attributes\CoversClass; use PHPUnit\Framework\Attributes\Test; use Symfony\Component\DependencyInjection\Argument\TaggedIteratorArgument; +use Symfony\Component\DependencyInjection\Reference; #[CoversClass(ApiProblemExtension::class)] class ApiProblemExtensionTest extends AbstractExtensionTestCase @@ -34,7 +35,7 @@ public function it_registers_json_exception_listener(): void $this->assertContainerBuilderHasServiceDefinitionWithArgument( JsonApiProblemExceptionListener::class, '$exceptionTransformer', - Transformer\Chain::class + new Reference(Transformer\Chain::class), ); $this->assertContainerBuilderHasServiceDefinitionWithArgument( JsonApiProblemExceptionListener::class,