Skip to content

Commit 9ffac70

Browse files
committed
Allow Symfony 8, rework service config to PHP
1 parent da97b32 commit 9ffac70

File tree

10 files changed

+216
-275
lines changed

10 files changed

+216
-275
lines changed

DependencyInjection/AdmingeneratorGeneratorExtension.php

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@
99
use Symfony\Component\DependencyInjection\ContainerBuilder;
1010
use Symfony\Component\DependencyInjection\Definition;
1111
use Symfony\Component\DependencyInjection\Exception\InvalidArgumentException;
12-
use Symfony\Component\DependencyInjection\Loader\XmlFileLoader;
12+
use Symfony\Component\DependencyInjection\Loader\PhpFileLoader;
1313
use Symfony\Component\DependencyInjection\Reference;
14-
use Symfony\Component\HttpKernel\DependencyInjection\Extension;
14+
use Symfony\Component\DependencyInjection\Extension\Extension;
1515
use Symfony\Component\Yaml\Yaml;
1616
use function Symfony\Component\DependencyInjection\Loader\Configurator\param;
1717

@@ -35,8 +35,8 @@ public function prepend(ContainerBuilder $container): void
3535

3636
public function load(array $configs, ContainerBuilder $container): void
3737
{
38-
$loader = new XmlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config'));
39-
$loader->load('services.xml');
38+
$loader = new PhpFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config'));
39+
$loader->load('services.php');
4040

4141
$config = $this->processConfiguration($this->getConfiguration($configs, $container), $configs);
4242

@@ -107,11 +107,11 @@ private function processModelManagerConfiguration(array $config, ContainerBuilde
107107
throw new ModelManagerNotSelectedException();
108108
}
109109

110-
$loader = new XmlFileLoader($container, new FileLocator(dirname(__DIR__) . DIRECTORY_SEPARATOR . 'Resources' . DIRECTORY_SEPARATOR . 'config'));
110+
$loader = new PhpFileLoader($container, new FileLocator(dirname(__DIR__) . DIRECTORY_SEPARATOR . 'Resources' . DIRECTORY_SEPARATOR . 'config'));
111111
$config['templates_dirs'][] = dirname(__DIR__) . DIRECTORY_SEPARATOR . 'Resources' . DIRECTORY_SEPARATOR . 'views' . DIRECTORY_SEPARATOR . 'templates';
112112

113113
if ($config['use_doctrine_orm']) {
114-
$loader->load('doctrine_orm.xml');
114+
$loader->load('doctrine_orm.php');
115115
$this->addTemplatesInitialization($container->getDefinition('admingenerator.generator.doctrine'), $config['templates_dirs']);
116116
if ($config['overwrite_if_exists']) {
117117
$container
@@ -127,7 +127,7 @@ private function processModelManagerConfiguration(array $config, ContainerBuilde
127127
}
128128

129129
if ($config['use_doctrine_odm']) {
130-
$loader->load('doctrine_odm.xml');
130+
$loader->load('doctrine_odm.php');
131131
$this->addTemplatesInitialization($container->getDefinition('admingenerator.generator.doctrine_odm'), $config['templates_dirs']);
132132
if ($config['overwrite_if_exists']) {
133133
$container
@@ -143,7 +143,7 @@ private function processModelManagerConfiguration(array $config, ContainerBuilde
143143
}
144144

145145
if ($config['use_propel']) {
146-
$loader->load('propel.xml');
146+
$loader->load('propel.php');
147147
$this->addTemplatesInitialization($container->getDefinition('admingenerator.generator.propel'), $config['templates_dirs']);
148148
if ($config['overwrite_if_exists']) {
149149
$container

Resources/config/doctrine_odm.php

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
<?php
2+
3+
use Admingenerator\GeneratorBundle\Generator\DoctrineODMGenerator;
4+
use Admingenerator\GeneratorBundle\Guesser\DoctrineODMFieldGuesser;
5+
use Admingenerator\GeneratorBundle\QueryFilter\DoctrineODMQueryFilter;
6+
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
7+
use function Symfony\Component\DependencyInjection\Loader\Configurator\param;
8+
use function Symfony\Component\DependencyInjection\Loader\Configurator\service;
9+
10+
return static function (ContainerConfigurator $container): void {
11+
$container->parameters()
12+
->set('admingenerator.doctrine_odm.class', DoctrineODMGenerator::class)
13+
->set('admingenerator.fieldguesser.doctrine_odm.class', DoctrineODMFieldGuesser::class)
14+
->set('admingenerator.queryfilter.doctrine_odm.class', DoctrineODMQueryFilter::class);
15+
16+
$services = $container->services();
17+
$services->set('admingenerator.fieldguesser.doctrine_odm', param('admingenerator.fieldguesser.doctrine_odm.class'))
18+
->arg('$registry', service('doctrine'))
19+
->arg('$objectModel', 'document');
20+
21+
$services->set('admingenerator.generator.doctrine_odm', param('admingenerator.doctrine_odm.class'))
22+
->arg('$outputDir', param('kernel.cache_dir'))
23+
->call('setBundleConfig', [param('admingenerator')])
24+
->call('setFieldGuesser', [service('admingenerator.fieldguesser.doctrine_odm')])
25+
->call('setRouter', [service('router')])
26+
->call('setTwig', [service('twig')])
27+
->call('setKernel', [service('kernel')])
28+
->public();
29+
};

Resources/config/doctrine_odm.xml

Lines changed: 0 additions & 40 deletions
This file was deleted.

Resources/config/doctrine_orm.php

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
<?php
2+
3+
use Admingenerator\GeneratorBundle\Generator\DoctrineGenerator;
4+
use Admingenerator\GeneratorBundle\Guesser\DoctrineFieldGuesser;
5+
use Admingenerator\GeneratorBundle\QueryFilter\DoctrineQueryFilter;
6+
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
7+
use function Symfony\Component\DependencyInjection\Loader\Configurator\param;
8+
use function Symfony\Component\DependencyInjection\Loader\Configurator\service;
9+
10+
return static function (ContainerConfigurator $container): void {
11+
$container->parameters()
12+
->set('admingenerator.doctrine.class', DoctrineGenerator::class)
13+
->set('admingenerator.fieldguesser.doctrine.class', DoctrineFieldGuesser::class)
14+
->set('admingenerator.queryfilter.doctrine.class', DoctrineQueryFilter::class);
15+
16+
$services = $container->services();
17+
$services->set('admingenerator.fieldguesser.doctrine', param('admingenerator.fieldguesser.doctrine.class'))
18+
->arg('$registry', service('doctrine'))
19+
->arg('$objectModel', 'entity');
20+
21+
$services->set('admingenerator.generator.doctrine', param('admingenerator.doctrine.class'))
22+
->arg('$outputDir', param('kernel.cache_dir'))
23+
->call('setBundleConfig', [param('admingenerator')])
24+
->call('setFieldGuesser', [service('admingenerator.fieldguesser.doctrine')])
25+
->call('setRouter', [service('router')])
26+
->call('setTwig', [service('twig')])
27+
->call('setKernel', [service('kernel')])
28+
->public();
29+
};

Resources/config/doctrine_orm.xml

Lines changed: 0 additions & 41 deletions
This file was deleted.

Resources/config/propel.php

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
<?php
2+
3+
use Admingenerator\GeneratorBundle\Generator\PropelGenerator;
4+
use Admingenerator\GeneratorBundle\Guesser\PropelORMFieldGuesser;
5+
use Admingenerator\GeneratorBundle\QueryFilter\PropelQueryFilter;
6+
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
7+
use function Symfony\Component\DependencyInjection\Loader\Configurator\param;
8+
use function Symfony\Component\DependencyInjection\Loader\Configurator\service;
9+
10+
return static function (ContainerConfigurator $container): void {
11+
$container->parameters()
12+
->set('admingenerator.propel.class', PropelGenerator::class)
13+
->set('admingenerator.fieldguesser.propel.class', PropelORMFieldGuesser::class)
14+
->set('admingenerator.queryfilter.propel.class', PropelQueryFilter::class);
15+
16+
$services = $container->services();
17+
$services->set('admingenerator.fieldguesser.propel', param('admingenerator.fieldguesser.propel.class'));
18+
19+
$services->set('admingenerator.generator.propel', param('admingenerator.propel.class'))
20+
->arg('$outputDir', param('kernel.cache_dir'))
21+
->call('setBundleConfig', [param('admingenerator')])
22+
->call('setFieldGuesser', [service('admingenerator.fieldguesser.propel')])
23+
->call('setRouter', [service('router')])
24+
->call('setTwig', [service('twig')])
25+
->call('setKernel', [service('kernel')])
26+
->public();
27+
};

Resources/config/propel.xml

Lines changed: 0 additions & 38 deletions
This file was deleted.

Resources/config/services.php

Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
<?php
2+
3+
use Admingenerator\GeneratorBundle\CacheBuilder\GeneratorCacheBuilder;
4+
use Admingenerator\GeneratorBundle\CacheWarmer\GeneratorCacheWarmer;
5+
use Admingenerator\GeneratorBundle\Command\AssetsInstallCommand;
6+
use Admingenerator\GeneratorBundle\Command\GenerateBaseClassesCommand;
7+
use Admingenerator\GeneratorBundle\EventListener\ControllerListener;
8+
use Admingenerator\GeneratorBundle\Maker\MakeAdmin;
9+
use Admingenerator\GeneratorBundle\Pagerfanta\View\AdmingeneratorView;
10+
use Admingenerator\GeneratorBundle\Routing\NestedRoutingLoader;
11+
use Admingenerator\GeneratorBundle\Routing\RoutingLoader;
12+
use Admingenerator\GeneratorBundle\Twig\Extension\ArrayExtension;
13+
use Admingenerator\GeneratorBundle\Twig\Extension\ClassifyExtension;
14+
use Admingenerator\GeneratorBundle\Twig\Extension\ConfigExtension;
15+
use Admingenerator\GeneratorBundle\Twig\Extension\CsrfTokenExtension;
16+
use Admingenerator\GeneratorBundle\Twig\Extension\EchoExtension;
17+
use Admingenerator\GeneratorBundle\Twig\Extension\ExtendsAdmingeneratedExtension;
18+
use Admingenerator\GeneratorBundle\Twig\Extension\LocalizedMoneyExtension;
19+
use Admingenerator\GeneratorBundle\Twig\Extension\SecurityExtension;
20+
use Admingenerator\GeneratorBundle\Validator\ModelClassValidator;
21+
use Admingenerator\GeneratorBundle\Validator\PropelModelClassValidator;
22+
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
23+
use Symfony\Component\Form\Extension\Validator\ValidatorTypeGuesser;
24+
use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface;
25+
use TwigGenerator\Extension\ExtraFilterExtension;
26+
use TwigGenerator\Extension\PHPPrintExtension;
27+
use TwigGenerator\Extension\TwigPrintExtension;
28+
use function Symfony\Component\DependencyInjection\Loader\Configurator\param;
29+
use function Symfony\Component\DependencyInjection\Loader\Configurator\service;
30+
31+
return static function (ContainerConfigurator $container): void {
32+
$container->parameters()
33+
->set('routing.loader.admingenerator.class', RoutingLoader::class)
34+
->set('routing.loader.admingenerator_nested.class', NestedRoutingLoader::class)
35+
->set('admingenerator.generator_cache_builder', GeneratorCacheBuilder::class)
36+
->set('admingenerator.cache_warmer.class', GeneratorCacheWarmer::class)
37+
->set('form.type_guesser.admingenerator.class', ValidatorTypeGuesser::class)
38+
->set('admingenerator.pagination.class', AdmingeneratorView::class)
39+
->set('admingenerator.base_admin_template', '@AdmingeneratorGenerator/base.html.twig')
40+
->set('admingenerator.overwrite_if_exists', false)
41+
->set('admingenerator.validator.model_class.class', ModelClassValidator::class)
42+
->set('admingenerator.validator.propel_model_class.class', PropelModelClassValidator::class);
43+
44+
$services = $container->services();
45+
$configureTwigExtension = static fn(string $id, string $class) => $services->set($id, $class)->tag('twig.extension');
46+
$configureTwigExtension('twig.extension.admingenerator.array', ArrayExtension::class);
47+
$configureTwigExtension('twig.extension.admingenerator.classify', ClassifyExtension::class);
48+
$configureTwigExtension('twig.extension.admingenerator.echo', EchoExtension::class);
49+
$configureTwigExtension('twig.extension.admingenerator.extra_filter', ExtraFilterExtension::class);
50+
$configureTwigExtension('twig.extension.admingenerator.twig_print', TwigPrintExtension::class);
51+
$configureTwigExtension('twig.extension.admingenerator.php_print', PHPPrintExtension::class);
52+
$configureTwigExtension('twig.extension.admingenerator.config', ConfigExtension::class)
53+
->arg('$bundleConfig', param('admingenerator'));
54+
$configureTwigExtension('twig.extension.admingenerator.csrf', CsrfTokenExtension::class)
55+
->arg('$csrfTokenManager', service('security.csrf.token_manager'));
56+
$configureTwigExtension('twig.extension.admingenerator.localized_money', LocalizedMoneyExtension::class);
57+
$configureTwigExtension('twig.extension.admingenerator.extends', ExtendsAdmingeneratedExtension::class);
58+
$configureTwigExtension('twig.extension.admingenerator.security', SecurityExtension::class)
59+
->arg('$authorizationChecker', AuthorizationCheckerInterface::class);
60+
61+
$services->set('admingenerator.generator.listener', ControllerListener::class)
62+
->tag('kernel.event_listener', ['event' => 'kernel.request', 'method' => 'onKernelRequest'])
63+
->arg('$container', service('service_container'))
64+
->arg('$twig', service('twig'));
65+
66+
$services->set('routing.loader.admingenerator', param('routing.loader.admingenerator.class'))
67+
->tag('routing.loader')
68+
->arg('$locator', service('file_locator'));
69+
70+
$services->set('routing.loader.admingenerator_nested', param('routing.loader.admingenerator_nested.class'))
71+
->tag('routing.loader')
72+
->arg('$locator', service('file_locator'));
73+
74+
$services->set('pagerfanta.view.admingenerator', param('admingenerator.pagination.class'))
75+
->tag('pagerfanta.view', ['alias' => 'admingenerator'])
76+
->arg('$translator', service('translator'));
77+
78+
$services->set('admingenerator.maker.make_admin', MakeAdmin::class)
79+
->tag('maker.command')
80+
->tag('container.no_preload');
81+
82+
83+
$services->set('admingenerator.command.install-assets', AssetsInstallCommand::class)
84+
->tag('console.command', ['command' => 'admin:install-assets'])
85+
->arg('$projectDir', param('kernel.project_dir'));
86+
87+
$services->set('admingenerator.validator.model_class', param('admingenerator.validator.model_class.class'))
88+
->tag('admingenerator.validator', ['alias' => 'model_class']);
89+
90+
$services->set('admingenerator.validator.propel_model_class', param('admingenerator.validator.propel_model_class.class'))
91+
->tag('admingenerator.validator.propel', ['alias' => 'propel_model_class']);
92+
93+
$services->set('admingenerator.generator_cache_builder', param('admingenerator.generator_cache_builder'))
94+
->arg('$container', service('service_container'));
95+
96+
$services->set('admingenerator.cache_warmer', param('admingenerator.cache_warmer.class'))
97+
->tag('kernel.cache_warmer', ['priority' => 100])
98+
->arg('$generatorCacheBuilder', service('admingenerator.generator_cache_builder'));
99+
100+
$services->set('admingenerator.command.generate_base_classes', GenerateBaseClassesCommand::class)
101+
->tag('console.command', ['command' => 'admin:generate-base-classes'])
102+
->arg('$generatorCacheBuilder', service('admingenerator.generator_cache_builder'));
103+
};

0 commit comments

Comments
 (0)