Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit9d3d592

Browse files
committed
[FrameworkBundle][Serializer] Move SerializerPass to the Serializer
1 parent37c5997 commit9d3d592

File tree

11 files changed

+183
-33
lines changed

11 files changed

+183
-33
lines changed

‎UPGRADE-3.3.md‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,10 @@ FrameworkBundle
3535

3636
* The`Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\AddConsoleCommandPass` has been deprecated. Use`Symfony\Component\Console\DependencyInjection\AddConsoleCommandPass` instead.
3737

38+
* The`Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\SerializerPass` class has been
39+
deprecated and will be removed in 4.0.
40+
Use the`Symfony\Component\Serializer\DependencyInjection\SerializerPass` class instead.
41+
3842
HttpKernel
3943
-----------
4044

‎UPGRADE-4.0.md‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,9 @@ FrameworkBundle
156156

157157
* The`Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\AddConsoleCommandPass` has been removed. Use`Symfony\Component\Console\DependencyInjection\AddConsoleCommandPass` instead.
158158

159+
* The`Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\SerializerPass` class has been removed.
160+
Use the`Symfony\Component\Serializer\DependencyInjection\SerializerPass` class instead.
161+
159162
SecurityBundle
160163
--------------
161164

‎src/Symfony/Bundle/FrameworkBundle/CHANGELOG.md‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ CHANGELOG
1313
* Added`GlobalVariables::getToken()`
1414
* Deprecated`Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\AddConsoleCommandPass`. Use`Symfony\Component\Console\DependencyInjection\AddConsoleCommandPass` instead.
1515
* Added configurable paths for validation files
16+
* Deprecated`SerializerPass`, use`Symfony\Component\Serializer\DependencyInjection\SerializerPass` instead.
1617

1718
3.2.0
1819
-----

‎src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/SerializerPass.php‎

Lines changed: 6 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -11,40 +11,18 @@
1111

1212
namespaceSymfony\Bundle\FrameworkBundle\DependencyInjection\Compiler;
1313

14-
useSymfony\Component\DependencyInjection\Compiler\PriorityTaggedServiceTrait;
15-
useSymfony\Component\DependencyInjection\ContainerBuilder;
16-
useSymfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
17-
useSymfony\Component\DependencyInjection\Exception\RuntimeException;
14+
@trigger_error(sprintf('The %s class is deprecated since version 3.3 and will be removed in 4.0. Use Symfony\Component\Serializer\DependencyInjection\SerializerPass instead.', SerializerPass::class),E_USER_DEPRECATED);
15+
16+
useSymfony\Component\Serializer\DependencyInjection\SerializerPassasBaseSerializerPass;
1817

1918
/**
2019
* Adds all services with the tags "serializer.encoder" and "serializer.normalizer" as
2120
* encoders and normalizers to the Serializer service.
2221
*
22+
* @deprecated since version 3.3, to be removed in 4.0. Use {@link BaseSerializerPass} instead.
23+
*
2324
* @author Javier Lopez <f12loalf@gmail.com>
2425
*/
25-
class SerializerPassimplements CompilerPassInterface
26+
class SerializerPassextends BaseSerializerPass
2627
{
27-
use PriorityTaggedServiceTrait;
28-
29-
publicfunctionprocess(ContainerBuilder$container)
30-
{
31-
if (!$container->hasDefinition('serializer')) {
32-
return;
33-
}
34-
35-
// Looks for all the services tagged "serializer.normalizer" and adds them to the Serializer service
36-
$normalizers =$this->findAndSortTaggedServices('serializer.normalizer',$container);
37-
38-
if (empty($normalizers)) {
39-
thrownewRuntimeException('You must tag at least one service as "serializer.normalizer" to use the Serializer service');
40-
}
41-
$container->getDefinition('serializer')->replaceArgument(0,$normalizers);
42-
43-
// Looks for all the services tagged "serializer.encoders" and adds them to the Serializer service
44-
$encoders =$this->findAndSortTaggedServices('serializer.encoder',$container);
45-
if (empty($encoders)) {
46-
thrownewRuntimeException('You must tag at least one service as "serializer.encoder" to use the Serializer service');
47-
}
48-
$container->getDefinition('serializer')->replaceArgument(1,$encoders);
49-
}
5028
}

‎src/Symfony/Bundle/FrameworkBundle/FrameworkBundle.php‎

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,11 @@
3232
useSymfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\CompilerDebugDumpPass;
3333
useSymfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\TranslationExtractorPass;
3434
useSymfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\TranslationDumperPass;
35-
useSymfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\SerializerPass;
3635
useSymfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\UnusedTagsPass;
3736
useSymfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\ConfigCachePass;
3837
useSymfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\ValidateWorkflowsPass;
3938
useSymfony\Component\Console\DependencyInjection\AddConsoleCommandPass;
39+
useSymfony\Component\Serializer\DependencyInjection\SerializerPass;
4040
useSymfony\Component\Debug\ErrorHandler;
4141
useSymfony\Component\DependencyInjection\ContainerBuilder;
4242
useSymfony\Component\DependencyInjection\Compiler\PassConfig;
@@ -93,7 +93,9 @@ public function build(ContainerBuilder $container)
9393
$container->addCompilerPass(newTranslationExtractorPass());
9494
$container->addCompilerPass(newTranslationDumperPass());
9595
$container->addCompilerPass(newFragmentRendererPass(), PassConfig::TYPE_AFTER_REMOVING);
96-
$container->addCompilerPass(newSerializerPass());
96+
if (class_exists(SerializerPass::class)) {
97+
$container->addCompilerPass(newSerializerPass());
98+
}
9799
$container->addCompilerPass(newPropertyInfoPass());
98100
$container->addCompilerPass(newControllerArgumentValueResolverPass());
99101
$container->addCompilerPass(newCachePoolPass(), PassConfig::TYPE_BEFORE_OPTIMIZATION,32);

‎src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Compiler/SerializerPassTest.php‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717
/**
1818
* Tests for the SerializerPass class.
1919
*
20+
* @group legacy
21+
*
2022
* @author Javier Lopez <f12loalf@gmail.com>
2123
*/
2224
class SerializerPassTestextends \PHPUnit_Framework_TestCase

‎src/Symfony/Bundle/FrameworkBundle/composer.json‎

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -44,20 +44,21 @@
4444
"symfony/process":"~2.8|~3.0",
4545
"symfony/security-core":"~3.2",
4646
"symfony/security-csrf":"~2.8|~3.0",
47-
"symfony/serializer":"~2.8|~3.0",
47+
"symfony/serializer":"~3.3",
4848
"symfony/translation":"~2.8|~3.0",
4949
"symfony/templating":"~2.8|~3.0",
5050
"symfony/validator":"~3.2",
5151
"symfony/yaml":"~3.2",
52-
"symfony/property-info":"~2.8|~3.0",
52+
"symfony/property-info":"~3.1",
5353
"doctrine/annotations":"~1.0",
5454
"phpdocumentor/reflection-docblock":"^3.0",
5555
"twig/twig":"~1.26|~2.0"
5656
},
5757
"conflict": {
5858
"phpdocumentor/reflection-docblock":"<3.0",
5959
"phpdocumentor/type-resolver":"<0.2.0",
60-
"symfony/console":"<3.3"
60+
"symfony/console":"<3.3",
61+
"symfony/serializer":"<3.3"
6162
},
6263
"suggest": {
6364
"ext-apcu":"For best performance of the system caches",

‎src/Symfony/Component/Serializer/CHANGELOG.md‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
CHANGELOG
22
=========
33

4+
3.3.0
5+
-----
6+
7+
* added`SerializerPass`
8+
49
3.1.0
510
-----
611

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
<?php
2+
3+
/*
4+
* This file is part of the Symfony package.
5+
*
6+
* (c) Fabien Potencier <fabien@symfony.com>
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+
namespaceSymfony\Component\Serializer\DependencyInjection;
13+
14+
useSymfony\Component\DependencyInjection\Compiler\PriorityTaggedServiceTrait;
15+
useSymfony\Component\DependencyInjection\ContainerBuilder;
16+
useSymfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
17+
useSymfony\Component\DependencyInjection\Exception\RuntimeException;
18+
19+
/**
20+
* Adds all services with the tags "serializer.encoder" and "serializer.normalizer" as
21+
* encoders and normalizers to the "serializer" service.
22+
*
23+
* @author Javier Lopez <f12loalf@gmail.com>
24+
*/
25+
class SerializerPassimplements CompilerPassInterface
26+
{
27+
use PriorityTaggedServiceTrait;
28+
29+
publicfunctionprocess(ContainerBuilder$container)
30+
{
31+
if (!$container->hasDefinition('serializer')) {
32+
return;
33+
}
34+
35+
// Looks for all the services tagged "serializer.normalizer" and adds them to the Serializer service
36+
$normalizers =$this->findAndSortTaggedServices('serializer.normalizer',$container);
37+
38+
if (empty($normalizers)) {
39+
thrownewRuntimeException('You must tag at least one service as "serializer.normalizer" to use the Serializer service');
40+
}
41+
$container->getDefinition('serializer')->replaceArgument(0,$normalizers);
42+
43+
// Looks for all the services tagged "serializer.encoders" and adds them to the Serializer service
44+
$encoders =$this->findAndSortTaggedServices('serializer.encoder',$container);
45+
if (empty($encoders)) {
46+
thrownewRuntimeException('You must tag at least one service as "serializer.encoder" to use the Serializer service');
47+
}
48+
$container->getDefinition('serializer')->replaceArgument(1,$encoders);
49+
}
50+
}
Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
<?php
2+
3+
/*
4+
* This file is part of the Symfony package.
5+
*
6+
* (c) Fabien Potencier <fabien@symfony.com>
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+
namespaceSymfony\Component\Serializer\Tests\DependencyInjection;
13+
14+
useSymfony\Component\DependencyInjection\Reference;
15+
useSymfony\Component\Serializer\DependencyInjection\SerializerPass;
16+
17+
/**
18+
* Tests for the SerializerPass class.
19+
*
20+
* @author Javier Lopez <f12loalf@gmail.com>
21+
*/
22+
class SerializerPassTestextends \PHPUnit_Framework_TestCase
23+
{
24+
publicfunctiontestThrowExceptionWhenNoNormalizers()
25+
{
26+
$container =$this->getMockBuilder('Symfony\Component\DependencyInjection\ContainerBuilder')->setMethods(array('hasDefinition','findTaggedServiceIds'))->getMock();
27+
28+
$container->expects($this->once())
29+
->method('hasDefinition')
30+
->with('serializer')
31+
->will($this->returnValue(true));
32+
33+
$container->expects($this->once())
34+
->method('findTaggedServiceIds')
35+
->with('serializer.normalizer')
36+
->will($this->returnValue(array()));
37+
38+
$this->setExpectedException('RuntimeException');
39+
40+
$serializerPass =newSerializerPass();
41+
$serializerPass->process($container);
42+
}
43+
44+
publicfunctiontestThrowExceptionWhenNoEncoders()
45+
{
46+
$definition =$this->getMockBuilder('Symfony\Component\DependencyInjection\Definition')->getMock();
47+
$container =$this->getMockBuilder('Symfony\Component\DependencyInjection\ContainerBuilder')->setMethods(array('hasDefinition','findTaggedServiceIds','getDefinition'))->getMock();
48+
49+
$container->expects($this->once())
50+
->method('hasDefinition')
51+
->with('serializer')
52+
->will($this->returnValue(true));
53+
54+
$container->expects($this->any())
55+
->method('findTaggedServiceIds')
56+
->will($this->onConsecutiveCalls(
57+
array('n' =>array('serializer.normalizer')),
58+
array()
59+
));
60+
61+
$container->expects($this->once())
62+
->method('getDefinition')
63+
->will($this->returnValue($definition));
64+
65+
$this->setExpectedException('RuntimeException');
66+
67+
$serializerPass =newSerializerPass();
68+
$serializerPass->process($container);
69+
}
70+
71+
publicfunctiontestServicesAreOrderedAccordingToPriority()
72+
{
73+
$services =array(
74+
'n3' =>array('tag' =>array()),
75+
'n1' =>array('tag' =>array('priority' =>200)),
76+
'n2' =>array('tag' =>array('priority' =>100)),
77+
);
78+
79+
$expected =array(
80+
newReference('n1'),
81+
newReference('n2'),
82+
newReference('n3'),
83+
);
84+
85+
$container =$this->getMockBuilder('Symfony\Component\DependencyInjection\ContainerBuilder')->setMethods(array('findTaggedServiceIds'))->getMock();
86+
87+
$container->expects($this->any())
88+
->method('findTaggedServiceIds')
89+
->will($this->returnValue($services));
90+
91+
$serializerPass =newSerializerPass();
92+
93+
$method =new \ReflectionMethod(
94+
SerializerPass::class,
95+
'findAndSortTaggedServices'
96+
);
97+
$method->setAccessible(true);
98+
99+
$actual =$method->invoke($serializerPass,'tag',$container);
100+
101+
$this->assertEquals($expected,$actual);
102+
}
103+
}

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp