Skip to content

Commit 005f360

Browse files
authored
Merge pull request #848 from garak/php-conf
🔧 migrate configuration to PHP
2 parents 295c73d + ce2e952 commit 005f360

File tree

7 files changed

+123
-99
lines changed

7 files changed

+123
-99
lines changed

.php-cs-fixer.php

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,20 @@
22
// see https://github.com/FriendsOfPHP/PHP-CS-Fixer
33

44
$finder = PhpCsFixer\Finder::create()
5-
->in([__DIR__.'/src', __DIR__.'/tests'])
5+
->in([__DIR__.'/config', __DIR__.'/src', __DIR__.'/tests'])
66
;
77

88
return (new PhpCsFixer\Config())
99
->setRiskyAllowed(true)
1010
->setRules([
1111
'@Symfony' => true,
1212
'@Symfony:risky' => true,
13-
'@PHP80Migration:risky' => true,
14-
'@PHP81Migration' => true,
15-
'@PHPUnit100Migration:risky' => true,
13+
'@PHP8x0Migration:risky' => true,
14+
'@PHP8x1Migration' => true,
15+
'@PHPUnit10x0Migration:risky' => true,
1616
'ordered_imports' => true,
1717
'declare_strict_types' => false,
18-
'native_function_invocation' => ['include' => ['@all']],
18+
'native_function_invocation' => ['include' => ['@all'], 'exclude' => ['param', 'service']],
1919
'final_class' => true,
2020
'php_unit_mock_short_will_return' => true,
2121
])

config/paginator.php

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
<?php
2+
3+
namespace Symfony\Component\DependencyInjection\Loader\Configurator;
4+
5+
use Knp\Bundle\PaginatorBundle\Helper\Processor;
6+
use Knp\Bundle\PaginatorBundle\Subscriber\SlidingPaginationSubscriber;
7+
use Knp\Bundle\PaginatorBundle\Twig\Extension\PaginationExtension;
8+
use Knp\Bundle\PaginatorBundle\Twig\Extension\PaginationRuntime;
9+
use Knp\Component\Pager\ArgumentAccess\ArgumentAccessInterface;
10+
use Knp\Component\Pager\ArgumentAccess\RequestArgumentAccess;
11+
use Knp\Component\Pager\Event\Subscriber\Filtration\FiltrationSubscriber;
12+
use Knp\Component\Pager\Event\Subscriber\Paginate\PaginationSubscriber;
13+
use Knp\Component\Pager\Event\Subscriber\Sortable\SortableSubscriber;
14+
use Knp\Component\Pager\Paginator;
15+
use Knp\Component\Pager\PaginatorInterface;
16+
17+
return static function (ContainerConfigurator $configurator): void {
18+
$services = $configurator->services();
19+
20+
$services
21+
->set('knp_paginator', Paginator::class)
22+
->public()
23+
->lazy()
24+
->args([
25+
service('event_dispatcher'),
26+
service(ArgumentAccessInterface::class),
27+
service('database_connection')->nullOnInvalid(),
28+
])
29+
->tag('proxy', ['interface' => PaginatorInterface::class])
30+
;
31+
32+
$services->alias(PaginatorInterface::class, 'knp_paginator');
33+
34+
$services
35+
->set(RequestArgumentAccess::class)
36+
->args([service('request_stack')])
37+
;
38+
39+
$services->alias(ArgumentAccessInterface::class, RequestArgumentAccess::class);
40+
41+
$services
42+
->set('knp_paginator.subscriber.paginate', PaginationSubscriber::class)
43+
->tag('kernel.event_subscriber')
44+
;
45+
46+
$services
47+
->set('knp_paginator.subscriber.sortable', SortableSubscriber::class)
48+
->tag('kernel.event_subscriber')
49+
;
50+
51+
$services
52+
->set('knp_paginator.subscriber.filtration', FiltrationSubscriber::class)
53+
->tag('kernel.event_subscriber')
54+
;
55+
56+
$services->set('knp_paginator.subscriber.sliding_pagination', SlidingPaginationSubscriber::class)
57+
->arg(0, [
58+
'defaultPaginationTemplate' => '%knp_paginator.template.pagination%',
59+
'defaultRelLinksTemplate' => '%knp_paginator.template.rel_links%',
60+
'defaultSortableTemplate' => '%knp_paginator.template.sortable%',
61+
'defaultFiltrationTemplate' => '%knp_paginator.template.filtration%',
62+
'defaultPageRange' => '%knp_paginator.page_range%',
63+
'defaultPageLimit' => '%knp_paginator.page_limit%',
64+
])
65+
->tag('kernel.event_subscriber')
66+
->tag('kernel.event_listener', ['event' => 'kernel.request', 'method' => 'onKernelRequest'])
67+
;
68+
69+
$services
70+
->set('knp_paginator.helper.processor', Processor::class)
71+
->args([
72+
service('router'),
73+
service('translator')->nullOnInvalid(),
74+
])
75+
;
76+
77+
$services
78+
->set('knp_paginator.twig.extension.pagination', PaginationExtension::class)
79+
->tag('twig.extension')
80+
;
81+
82+
$services
83+
->set(PaginationRuntime::class)
84+
->args([
85+
service('knp_paginator.helper.processor'),
86+
param('knp_paginator.page_name'),
87+
param('knp_paginator.remove_first_page_param'),
88+
])
89+
->tag('twig.runtime')
90+
;
91+
};

config/paginator.xml

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

config/templating_php.php

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
<?php
2+
3+
namespace Symfony\Component\DependencyInjection\Loader\Configurator;
4+
5+
use Knp\Bundle\PaginatorBundle\Templating\PaginationHelper;
6+
7+
return static function (ContainerConfigurator $configurator): void {
8+
$configurator
9+
->parameters()
10+
->set('knp_paginator.templating.helper.pagination.class', PaginationHelper::class)
11+
;
12+
13+
$configurator
14+
->services()
15+
->set('knp_paginator.templating.helper.pagination', param('knp_paginator.templating.helper.pagination.class'))
16+
->arg(0, service('knp_paginator.helper.processor'))
17+
->arg(1, service('templating.engine.php'))
18+
->tag('templating.helper', ['alias' => 'knp_pagination'])
19+
;
20+
};

config/templating_php.xml

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

src/DependencyInjection/KnpPaginatorExtension.php

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,27 +8,22 @@
88
use Symfony\Component\DependencyInjection\ContainerBuilder;
99
use Symfony\Component\DependencyInjection\Definition;
1010
use Symfony\Component\DependencyInjection\Extension\Extension;
11-
use Symfony\Component\DependencyInjection\Loader\XmlFileLoader;
11+
use Symfony\Component\DependencyInjection\Loader\PhpFileLoader;
1212

1313
final class KnpPaginatorExtension extends Extension
1414
{
15-
/**
16-
* Build the extension services.
17-
*
18-
* @param array<string, array<string, mixed>> $configs
19-
*/
2015
public function load(array $configs, ContainerBuilder $container): void
2116
{
2217
$processor = new Processor();
2318

24-
$loader = new XmlFileLoader($container, new FileLocator(__DIR__.'/../../config'));
25-
$loader->load('paginator.xml');
19+
$loader = new PhpFileLoader($container, new FileLocator(__DIR__.'/../../config'));
20+
$loader->load('paginator.php');
2621

2722
if ($container->hasParameter('templating.engines')) {
2823
/** @var array<string> $engines */
2924
$engines = $container->getParameter('templating.engines');
3025
if (\in_array('php', $engines, true)) {
31-
$loader->load('templating_php.xml');
26+
$loader->load('templating_php.php');
3227
}
3328
}
3429

tests/DependencyInjection/Compiler/PaginatorAwarePassTest.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
use Symfony\Component\Config\Definition\Exception\InvalidDefinitionException;
1010
use Symfony\Component\Config\FileLocator;
1111
use Symfony\Component\DependencyInjection\ContainerBuilder;
12-
use Symfony\Component\DependencyInjection\Loader\XmlFileLoader;
12+
use Symfony\Component\DependencyInjection\Loader\PhpFileLoader;
1313
use Symfony\Component\DependencyInjection\Reference;
1414

1515
final class PaginatorAwarePassTest extends TestCase
@@ -57,8 +57,8 @@ public function testExceptionNoPaginator(): void
5757
public function testProxyAndLazy(): void
5858
{
5959
$container = new ContainerBuilder();
60-
$loader = new XmlFileLoader($container, new FileLocator(__DIR__.'/../../../config'));
61-
$loader->load('paginator.xml');
60+
$loader = new PhpFileLoader($container, new FileLocator(__DIR__.'/../../../config'));
61+
$loader->load('paginator.php');
6262
$container->register('knp.paginator');
6363

6464
$definition = $container->getDefinition('knp_paginator');

0 commit comments

Comments
 (0)