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\DependencyInjection\ContainerBuilder;
|
||||
use Symfony\Component\DependencyInjection\Extension\Extension;
|
||||
use Symfony\Component\DependencyInjection\Loader\XmlFileLoader;
|
||||
use Symfony\Component\DependencyInjection\Loader\PhpFileLoader;
|
||||
|
||||
final class SyliusStateMachineAbstractionExtension extends Extension
|
||||
{
|
||||
|
|
@ -24,13 +24,13 @@ final class SyliusStateMachineAbstractionExtension extends Extension
|
|||
{
|
||||
$config = $this->processConfiguration($this->getConfiguration([], $container), $configs);
|
||||
|
||||
$loader = new XmlFileLoader($container, new FileLocator(dirname(__DIR__, 2) . '/config/'));
|
||||
$loader->load('services.xml');
|
||||
$loader = new PhpFileLoader($container, new FileLocator(dirname(__DIR__, 2) . '/config/'));
|
||||
$loader->load('services.php');
|
||||
|
||||
if ($container->hasParameter('kernel.bundles')) {
|
||||
$bundles = $container->getParameter('kernel.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\DependencyInjection\Argument\ServiceLocatorArgument;
|
||||
use Symfony\Component\DependencyInjection\Definition;
|
||||
use Symfony\Component\DependencyInjection\Loader\XmlFileLoader;
|
||||
use Symfony\Component\DependencyInjection\Loader\YamlFileLoader;
|
||||
use Tests\Sylius\Bundle\PaymentBundle\Stub\GatewayConfigurationTypeStub;
|
||||
use Tests\Sylius\Bundle\PaymentBundle\Stub\NotifyPaymentProviderStub;
|
||||
|
|
@ -238,10 +237,6 @@ final class SyliusPaymentExtensionTest extends AbstractExtensionTestCase
|
|||
YamlFileLoader::class,
|
||||
'command_provider.yaml',
|
||||
];
|
||||
yield 'Load XML' => [
|
||||
XmlFileLoader::class,
|
||||
'command_provider.xml',
|
||||
];
|
||||
}
|
||||
|
||||
public static function getHttpResponseProviderLoader(): iterable
|
||||
|
|
@ -250,10 +245,6 @@ final class SyliusPaymentExtensionTest extends AbstractExtensionTestCase
|
|||
YamlFileLoader::class,
|
||||
'http_response_provider.yaml',
|
||||
];
|
||||
yield 'Load XML' => [
|
||||
XmlFileLoader::class,
|
||||
'http_response_provider.xml',
|
||||
];
|
||||
}
|
||||
|
||||
protected function getContainerExtensions(): array
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue