Skip to content

Commit 69d7efb

Browse files
committed
Migrate from XML to PHP service configuration
1 parent 7edd009 commit 69d7efb

File tree

10 files changed

+261
-116
lines changed

10 files changed

+261
-116
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,4 @@
88

99
/.phpunit.result.cache
1010
.phpunit.cache/
11+
tests/Application/config/reference.php

src/Bundle/DependencyInjection/SyliusMailerExtension.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,15 +18,15 @@
1818
use Symfony\Component\Config\FileLocator;
1919
use Symfony\Component\DependencyInjection\Alias;
2020
use Symfony\Component\DependencyInjection\ContainerBuilder;
21-
use Symfony\Component\DependencyInjection\Loader\XmlFileLoader;
21+
use Symfony\Component\DependencyInjection\Loader\PhpFileLoader;
2222
use Symfony\Component\HttpKernel\DependencyInjection\ConfigurableExtension;
2323

2424
final class SyliusMailerExtension extends ConfigurableExtension
2525
{
2626
protected function loadInternal(array $mergedConfig, ContainerBuilder $container): void
2727
{
28-
$loader = new XmlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config'));
29-
$loader->load('services.xml');
28+
$loader = new PhpFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config'));
29+
$loader->load('services.php');
3030

3131
$this->configureSenderAdapter($mergedConfig, $container);
3232
$this->configureRendererAdapter($mergedConfig, $container);
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
<?php
2+
3+
/*
4+
* This file is part of the Sylius package.
5+
*
6+
* (c) Sylius Sp. z o.o.
7+
*
8+
* For the full copyright and license information, please view the LICENSE
9+
* file that was distributed with this source code.
10+
*/
11+
12+
declare(strict_types=1);
13+
14+
namespace Symfony\Component\DependencyInjection\Loader\Configurator;
15+
16+
return static function (ContainerConfigurator $container): void {
17+
$container->import('services/factory.php');
18+
$container->import('services/provider.php');
19+
$container->import('services/renderer.php');
20+
$container->import('services/sender.php');
21+
$container->import('services/modifier.php');
22+
$container->import('services/console.php');
23+
};

src/Bundle/Resources/config/services.xml

Lines changed: 0 additions & 113 deletions
This file was deleted.
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
<?php
2+
3+
/*
4+
* This file is part of the Sylius package.
5+
*
6+
* (c) Sylius Sp. z o.o.
7+
*
8+
* For the full copyright and license information, please view the LICENSE
9+
* file that was distributed with this source code.
10+
*/
11+
12+
declare(strict_types=1);
13+
14+
namespace Symfony\Component\DependencyInjection\Loader\Configurator;
15+
16+
use Sylius\Bundle\MailerBundle\Console\Command\DebugMailerCommand;
17+
use Sylius\Bundle\MailerBundle\Console\Command\Dumper\EmailDetailDumperInterface;
18+
use Sylius\Bundle\MailerBundle\Console\Command\Dumper\EmailDetailsDumper;
19+
use Sylius\Bundle\MailerBundle\Console\Command\Dumper\EmailsListDumper;
20+
use Sylius\Bundle\MailerBundle\Console\Command\Dumper\SenderDataDumper;
21+
use Symfony\Contracts\Translation\TranslatorInterface;
22+
23+
return static function (ContainerConfigurator $container): void {
24+
$services = $container->services();
25+
$services->defaults()->public();
26+
27+
$services->set(EmailDetailDumperInterface::class, EmailDetailsDumper::class)
28+
->args([
29+
'%sylius.mailer.emails%',
30+
service(TranslatorInterface::class)->nullOnInvalid(),
31+
service('twig.loader'),
32+
]);
33+
34+
$services->set(EmailsListDumper::class)
35+
->args([
36+
'%sylius.mailer.emails%',
37+
service(TranslatorInterface::class)->nullOnInvalid(),
38+
])
39+
->tag('sylius_mailer.dumper');
40+
41+
$services->set(SenderDataDumper::class)
42+
->args([
43+
'%sylius.mailer.sender_name%',
44+
'%sylius.mailer.sender_address%',
45+
])
46+
->tag('sylius_mailer.dumper');
47+
48+
$services->set(DebugMailerCommand::class)
49+
->autoconfigure()
50+
->args([
51+
tagged_iterator('sylius_mailer.dumper'),
52+
service(EmailDetailDumperInterface::class),
53+
]);
54+
};
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
<?php
2+
3+
/*
4+
* This file is part of the Sylius package.
5+
*
6+
* (c) Sylius Sp. z o.o.
7+
*
8+
* For the full copyright and license information, please view the LICENSE
9+
* file that was distributed with this source code.
10+
*/
11+
12+
declare(strict_types=1);
13+
14+
namespace Symfony\Component\DependencyInjection\Loader\Configurator;
15+
16+
use Sylius\Component\Mailer\Factory\EmailFactory;
17+
use Sylius\Component\Mailer\Factory\EmailFactoryInterface;
18+
19+
return static function (ContainerConfigurator $container): void {
20+
$services = $container->services();
21+
$services->defaults()->public();
22+
23+
$services->set('sylius.factory.email', EmailFactory::class);
24+
$services->alias(EmailFactoryInterface::class, 'sylius.factory.email');
25+
};
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
<?php
2+
3+
/*
4+
* This file is part of the Sylius package.
5+
*
6+
* (c) Sylius Sp. z o.o.
7+
*
8+
* For the full copyright and license information, please view the LICENSE
9+
* file that was distributed with this source code.
10+
*/
11+
12+
declare(strict_types=1);
13+
14+
namespace Symfony\Component\DependencyInjection\Loader\Configurator;
15+
16+
use Sylius\Component\Mailer\Modifier\CompositeEmailModifier;
17+
use Sylius\Component\Mailer\Modifier\EmailModifierInterface;
18+
19+
return static function (ContainerConfigurator $container): void {
20+
$services = $container->services();
21+
$services->defaults()->public();
22+
23+
$services->set(EmailModifierInterface::class, CompositeEmailModifier::class)
24+
->args([
25+
tagged_iterator('sylius_mailer.email_modifier'),
26+
]);
27+
};
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
<?php
2+
3+
/*
4+
* This file is part of the Sylius package.
5+
*
6+
* (c) Sylius Sp. z o.o.
7+
*
8+
* For the full copyright and license information, please view the LICENSE
9+
* file that was distributed with this source code.
10+
*/
11+
12+
declare(strict_types=1);
13+
14+
namespace Symfony\Component\DependencyInjection\Loader\Configurator;
15+
16+
use Sylius\Component\Mailer\Provider\DefaultSettingsProvider;
17+
use Sylius\Component\Mailer\Provider\DefaultSettingsProviderInterface;
18+
use Sylius\Component\Mailer\Provider\EmailProvider;
19+
use Sylius\Component\Mailer\Provider\EmailProviderInterface;
20+
21+
return static function (ContainerConfigurator $container): void {
22+
$services = $container->services();
23+
$services->defaults()->public();
24+
25+
$services->set('sylius.email_provider', EmailProvider::class)
26+
->args([
27+
service('sylius.factory.email'),
28+
'%sylius.mailer.emails%',
29+
]);
30+
$services->alias(EmailProviderInterface::class, 'sylius.email_provider');
31+
32+
$services->set('sylius.mailer.default_settings_provider', DefaultSettingsProvider::class)
33+
->args([
34+
'%sylius.mailer.sender_name%',
35+
'%sylius.mailer.sender_address%',
36+
]);
37+
$services->alias(DefaultSettingsProviderInterface::class, 'sylius.mailer.default_settings_provider');
38+
};
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
<?php
2+
3+
/*
4+
* This file is part of the Sylius package.
5+
*
6+
* (c) Sylius Sp. z o.o.
7+
*
8+
* For the full copyright and license information, please view the LICENSE
9+
* file that was distributed with this source code.
10+
*/
11+
12+
declare(strict_types=1);
13+
14+
namespace Symfony\Component\DependencyInjection\Loader\Configurator;
15+
16+
use Sylius\Bundle\MailerBundle\Renderer\Adapter\EmailDefaultAdapter;
17+
use Sylius\Bundle\MailerBundle\Renderer\Adapter\EmailTwigAdapter;
18+
use Sylius\Component\Mailer\Renderer\Adapter\AbstractAdapter;
19+
20+
return static function (ContainerConfigurator $container): void {
21+
$services = $container->services();
22+
$services->defaults()->public();
23+
24+
$services->set('sylius.email_renderer.adapter.abstract', AbstractAdapter::class)
25+
->abstract()
26+
->call('setEventDispatcher', [service('event_dispatcher')->ignoreOnInvalid()]);
27+
28+
$services->set('sylius.email_renderer.adapter.default', EmailDefaultAdapter::class)
29+
->parent('sylius.email_renderer.adapter.abstract')
30+
->public();
31+
32+
$services->set('sylius.email_renderer.adapter.twig', EmailTwigAdapter::class)
33+
->parent('sylius.email_renderer.adapter.abstract')
34+
->public()
35+
->args([
36+
service('twig'),
37+
service('event_dispatcher')->nullOnInvalid(),
38+
]);
39+
};

0 commit comments

Comments
 (0)