mirror of
https://github.com/Sylius/Sylius.git
synced 2026-07-05 20:57:12 +00:00
[XML2PHP] StateMachineAbstraction (#19063)
Some checks are pending
Continuous Integration (Minimal) / Static checks (push) Waiting to run
Continuous Integration (Minimal) / Tests (MariaDB) (push) Blocked by required conditions
Continuous Integration (Minimal) / Tests (MySQL) (push) Blocked by required conditions
Continuous Integration (Minimal) / Javascript Tests (MySQL) (push) Blocked by required conditions
Continuous Integration (Minimal) / Tests (PostgreSQL) (push) Blocked by required conditions
Continuous Integration (Minimal) / Frontend (push) Blocked by required conditions
Continuous Integration (Minimal) / Packages (push) Blocked by required conditions
Some checks are pending
Continuous Integration (Minimal) / Static checks (push) Waiting to run
Continuous Integration (Minimal) / Tests (MariaDB) (push) Blocked by required conditions
Continuous Integration (Minimal) / Tests (MySQL) (push) Blocked by required conditions
Continuous Integration (Minimal) / Javascript Tests (MySQL) (push) Blocked by required conditions
Continuous Integration (Minimal) / Tests (PostgreSQL) (push) Blocked by required conditions
Continuous Integration (Minimal) / Frontend (push) Blocked by required conditions
Continuous Integration (Minimal) / Packages (push) Blocked by required conditions
| Q | A |-----------------|----- | Branch? | 2.3 | Bug fix? | no | New feature? | no | BC breaks? | no | Deprecations? | no<!-- don't forget to update the UPGRADE-*.md file --> | Related tickets | extracted from https://github.com/Sylius/Sylius/pull/18803, partially https://github.com/Sylius/Sylius/issues/18490 | License | MIT <!-- - Bug fixes must be submitted against the 2.2 branch - Features and deprecations must be submitted against the 2.3 branch - Make sure that the correct base branch is set To be sure you are not breaking any Backward Compatibilities, check the documentation: https://docs.sylius.com/en/latest/book/organization/backward-compatibility-promise.html --> <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit ## Release Notes * **Refactor** * Migrated state machine service configurations from XML format to PHP-based configuration files for improved maintainability and consistency. * Updated the service loader to support PHP file-based configuration instead of XML. * **Tests** * Streamlined test coverage to focus on YAML-based service configuration validation paths. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
This commit is contained in:
commit
499d84b607
6 changed files with 84 additions and 84 deletions
50
src/Sylius/Abstraction/StateMachine/config/services.php
Normal file
50
src/Sylius/Abstraction/StateMachine/config/services.php
Normal file
|
|
@ -0,0 +1,50 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This file is part of the Sylius package.
|
||||||
|
*
|
||||||
|
* (c) Sylius Sp. z o.o.
|
||||||
|
*
|
||||||
|
* For the full copyright and license information, please view the LICENSE
|
||||||
|
* file that was distributed with this source code.
|
||||||
|
*/
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace Symfony\Component\DependencyInjection\Loader\Configurator;
|
||||||
|
|
||||||
|
use Sylius\Abstraction\StateMachine\CompositeStateMachine;
|
||||||
|
use Sylius\Abstraction\StateMachine\StateMachineInterface;
|
||||||
|
use Sylius\Abstraction\StateMachine\SymfonyWorkflowAdapter;
|
||||||
|
use Sylius\Abstraction\StateMachine\Twig\StateMachineExtension;
|
||||||
|
|
||||||
|
return static function (ContainerConfigurator $container): void {
|
||||||
|
$services = $container->services();
|
||||||
|
$services->defaults()->public();
|
||||||
|
|
||||||
|
$services->set('sylius_abstraction.state_machine', CompositeStateMachine::class)
|
||||||
|
->args([
|
||||||
|
tagged_iterator('sylius.state_machine', indexAttribute: 'key'),
|
||||||
|
'%sylius_abstraction.state_machine.default_adapter%',
|
||||||
|
'%sylius_abstraction.state_machine.graphs_to_adapters_mapping%',
|
||||||
|
]);
|
||||||
|
|
||||||
|
$services->alias(StateMachineInterface::class . ' $compositeStateMachine', 'sylius_abstraction.state_machine.composite');
|
||||||
|
|
||||||
|
$services->alias('sylius_abstraction.state_machine.composite', 'sylius_abstraction.state_machine');
|
||||||
|
$services->alias(StateMachineInterface::class, 'sylius_abstraction.state_machine');
|
||||||
|
|
||||||
|
$services->set('sylius_abstraction.state_machine.adapter.symfony_workflow', SymfonyWorkflowAdapter::class)
|
||||||
|
->args([
|
||||||
|
service('workflow.registry'),
|
||||||
|
])
|
||||||
|
->tag('sylius.state_machine', ['key' => 'symfony_workflow']);
|
||||||
|
|
||||||
|
$services->alias(StateMachineInterface::class . ' $symfonyWorkflow', 'sylius_abstraction.state_machine.adapter.symfony_workflow');
|
||||||
|
|
||||||
|
$services->set('sylius_abstraction.twig.extension.state_machine', StateMachineExtension::class)
|
||||||
|
->args([
|
||||||
|
service('sylius_abstraction.state_machine'),
|
||||||
|
])
|
||||||
|
->tag('twig.extension');
|
||||||
|
};
|
||||||
|
|
@ -1,43 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
|
|
||||||
<!--
|
|
||||||
|
|
||||||
This file is part of the Sylius package.
|
|
||||||
|
|
||||||
(c) Sylius Sp. z o.o.
|
|
||||||
|
|
||||||
For the full copyright and license information, please view the LICENSE
|
|
||||||
file that was distributed with this source code.
|
|
||||||
|
|
||||||
-->
|
|
||||||
|
|
||||||
<container
|
|
||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
||||||
xmlns="http://symfony.com/schema/dic/services"
|
|
||||||
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd"
|
|
||||||
>
|
|
||||||
<services>
|
|
||||||
<defaults public="true" />
|
|
||||||
|
|
||||||
<service id="sylius_abstraction.state_machine" class="Sylius\Abstraction\StateMachine\CompositeStateMachine">
|
|
||||||
<argument type="tagged_iterator" tag="sylius.state_machine" index-by="key" />
|
|
||||||
<argument>%sylius_abstraction.state_machine.default_adapter%</argument>
|
|
||||||
<argument>%sylius_abstraction.state_machine.graphs_to_adapters_mapping%</argument>
|
|
||||||
</service>
|
|
||||||
<service id="Sylius\Abstraction\StateMachine\StateMachineInterface $compositeStateMachine" alias="sylius_abstraction.state_machine.composite" />
|
|
||||||
|
|
||||||
<service id="sylius_abstraction.state_machine.composite" alias="sylius_abstraction.state_machine" />
|
|
||||||
<service id="Sylius\Abstraction\StateMachine\StateMachineInterface" alias="sylius_abstraction.state_machine" />
|
|
||||||
|
|
||||||
<service id="sylius_abstraction.state_machine.adapter.symfony_workflow" class="Sylius\Abstraction\StateMachine\SymfonyWorkflowAdapter">
|
|
||||||
<argument type="service" id="workflow.registry" />
|
|
||||||
<tag name="sylius.state_machine" key="symfony_workflow" />
|
|
||||||
</service>
|
|
||||||
<service id="Sylius\Abstraction\StateMachine\StateMachineInterface $symfonyWorkflow" alias="sylius_abstraction.state_machine.adapter.symfony_workflow" />
|
|
||||||
|
|
||||||
<service id="sylius_abstraction.twig.extension.state_machine" class="Sylius\Abstraction\StateMachine\Twig\StateMachineExtension">
|
|
||||||
<argument type="service" id="sylius_abstraction.state_machine" />
|
|
||||||
<tag name="twig.extension" />
|
|
||||||
</service>
|
|
||||||
</services>
|
|
||||||
</container>
|
|
||||||
|
|
@ -0,0 +1,30 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This file is part of the Sylius package.
|
||||||
|
*
|
||||||
|
* (c) Sylius Sp. z o.o.
|
||||||
|
*
|
||||||
|
* For the full copyright and license information, please view the LICENSE
|
||||||
|
* file that was distributed with this source code.
|
||||||
|
*/
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace Symfony\Component\DependencyInjection\Loader\Configurator;
|
||||||
|
|
||||||
|
use Sylius\Abstraction\StateMachine\StateMachineInterface;
|
||||||
|
use Sylius\Abstraction\StateMachine\WinzouStateMachineAdapter;
|
||||||
|
|
||||||
|
return static function (ContainerConfigurator $container): void {
|
||||||
|
$services = $container->services();
|
||||||
|
$services->defaults()->public();
|
||||||
|
|
||||||
|
$services->set('sylius_abstraction.state_machine.adapter.winzou_state_machine', WinzouStateMachineAdapter::class)
|
||||||
|
->args([
|
||||||
|
service('sm.factory'),
|
||||||
|
])
|
||||||
|
->tag('sylius.state_machine', ['key' => 'winzou_state_machine']);
|
||||||
|
|
||||||
|
$services->alias(StateMachineInterface::class . ' $winzouStateMachine', 'sylius_abstraction.state_machine.adapter.winzou_state_machine');
|
||||||
|
};
|
||||||
|
|
@ -1,28 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
|
|
||||||
<!--
|
|
||||||
|
|
||||||
This file is part of the Sylius package.
|
|
||||||
|
|
||||||
(c) Sylius Sp. z o.o.
|
|
||||||
|
|
||||||
For the full copyright and license information, please view the LICENSE
|
|
||||||
file that was distributed with this source code.
|
|
||||||
|
|
||||||
-->
|
|
||||||
|
|
||||||
<container
|
|
||||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
||||||
xmlns="http://symfony.com/schema/dic/services"
|
|
||||||
xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd"
|
|
||||||
>
|
|
||||||
<services>
|
|
||||||
<defaults public="true" />
|
|
||||||
|
|
||||||
<service id="sylius_abstraction.state_machine.adapter.winzou_state_machine" class="Sylius\Abstraction\StateMachine\WinzouStateMachineAdapter">
|
|
||||||
<argument type="service" id="sm.factory" />
|
|
||||||
<tag name="sylius.state_machine" key="winzou_state_machine" />
|
|
||||||
</service>
|
|
||||||
<service id="Sylius\Abstraction\StateMachine\StateMachineInterface $winzouStateMachine" alias="sylius_abstraction.state_machine.adapter.winzou_state_machine" />
|
|
||||||
</services>
|
|
||||||
</container>
|
|
||||||
|
|
@ -16,7 +16,7 @@ namespace Sylius\Abstraction\StateMachine\DependencyInjection;
|
||||||
use Symfony\Component\Config\FileLocator;
|
use Symfony\Component\Config\FileLocator;
|
||||||
use Symfony\Component\DependencyInjection\ContainerBuilder;
|
use Symfony\Component\DependencyInjection\ContainerBuilder;
|
||||||
use Symfony\Component\DependencyInjection\Extension\Extension;
|
use Symfony\Component\DependencyInjection\Extension\Extension;
|
||||||
use Symfony\Component\DependencyInjection\Loader\XmlFileLoader;
|
use Symfony\Component\DependencyInjection\Loader\PhpFileLoader;
|
||||||
|
|
||||||
final class SyliusStateMachineAbstractionExtension extends Extension
|
final class SyliusStateMachineAbstractionExtension extends Extension
|
||||||
{
|
{
|
||||||
|
|
@ -24,13 +24,13 @@ final class SyliusStateMachineAbstractionExtension extends Extension
|
||||||
{
|
{
|
||||||
$config = $this->processConfiguration($this->getConfiguration([], $container), $configs);
|
$config = $this->processConfiguration($this->getConfiguration([], $container), $configs);
|
||||||
|
|
||||||
$loader = new XmlFileLoader($container, new FileLocator(dirname(__DIR__, 2) . '/config/'));
|
$loader = new PhpFileLoader($container, new FileLocator(dirname(__DIR__, 2) . '/config/'));
|
||||||
$loader->load('services.xml');
|
$loader->load('services.php');
|
||||||
|
|
||||||
if ($container->hasParameter('kernel.bundles')) {
|
if ($container->hasParameter('kernel.bundles')) {
|
||||||
$bundles = $container->getParameter('kernel.bundles');
|
$bundles = $container->getParameter('kernel.bundles');
|
||||||
if (array_key_exists('winzouStateMachineBundle', $bundles)) {
|
if (array_key_exists('winzouStateMachineBundle', $bundles)) {
|
||||||
$loader->load('services/integrations/winzou.xml');
|
$loader->load('services/integrations/winzou.php');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,6 @@ use Sylius\Component\Payment\Model\PaymentRequestInterface;
|
||||||
use Symfony\Component\Config\FileLocator;
|
use Symfony\Component\Config\FileLocator;
|
||||||
use Symfony\Component\DependencyInjection\Argument\ServiceLocatorArgument;
|
use Symfony\Component\DependencyInjection\Argument\ServiceLocatorArgument;
|
||||||
use Symfony\Component\DependencyInjection\Definition;
|
use Symfony\Component\DependencyInjection\Definition;
|
||||||
use Symfony\Component\DependencyInjection\Loader\XmlFileLoader;
|
|
||||||
use Symfony\Component\DependencyInjection\Loader\YamlFileLoader;
|
use Symfony\Component\DependencyInjection\Loader\YamlFileLoader;
|
||||||
use Tests\Sylius\Bundle\PaymentBundle\Stub\GatewayConfigurationTypeStub;
|
use Tests\Sylius\Bundle\PaymentBundle\Stub\GatewayConfigurationTypeStub;
|
||||||
use Tests\Sylius\Bundle\PaymentBundle\Stub\NotifyPaymentProviderStub;
|
use Tests\Sylius\Bundle\PaymentBundle\Stub\NotifyPaymentProviderStub;
|
||||||
|
|
@ -238,10 +237,6 @@ final class SyliusPaymentExtensionTest extends AbstractExtensionTestCase
|
||||||
YamlFileLoader::class,
|
YamlFileLoader::class,
|
||||||
'command_provider.yaml',
|
'command_provider.yaml',
|
||||||
];
|
];
|
||||||
yield 'Load XML' => [
|
|
||||||
XmlFileLoader::class,
|
|
||||||
'command_provider.xml',
|
|
||||||
];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function getHttpResponseProviderLoader(): iterable
|
public static function getHttpResponseProviderLoader(): iterable
|
||||||
|
|
@ -250,10 +245,6 @@ final class SyliusPaymentExtensionTest extends AbstractExtensionTestCase
|
||||||
YamlFileLoader::class,
|
YamlFileLoader::class,
|
||||||
'http_response_provider.yaml',
|
'http_response_provider.yaml',
|
||||||
];
|
];
|
||||||
yield 'Load XML' => [
|
|
||||||
XmlFileLoader::class,
|
|
||||||
'http_response_provider.xml',
|
|
||||||
];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function getContainerExtensions(): array
|
protected function getContainerExtensions(): array
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue