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

Appearance settings

Commit e8d06b2

Browse filesBrowse files
committed
minor #14798 [DependencyInjection] provide better error message when using deprecated configuration options (xabbuh)
This PR was merged into the 2.7 branch. Discussion ---------- [DependencyInjection] provide better error message when using deprecated configuration options | Q | A | ------------- | --- | Bug fix? | yes | New feature? | no | BC breaks? | no | Deprecations? | no | Tests pass? | yes | Fixed tickets | #14687 | License | MIT | Doc PR | Commits ------- e1e7440 [DependencyInjection] provide better error message when using deprecated configuration options
2 parents d4efccd + e1e7440 commit e8d06b2
Copy full SHA for e8d06b2

File tree

Expand file treeCollapse file tree

8 files changed

+34
-22
lines changed
Filter options
Expand file treeCollapse file tree

8 files changed

+34
-22
lines changed

‎src/Symfony/Component/DependencyInjection/Loader/XmlFileLoader.php

Copy file name to clipboardExpand all lines: src/Symfony/Component/DependencyInjection/Loader/XmlFileLoader.php
+16-6Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -126,10 +126,11 @@ private function parseDefinitions(\DOMDocument $xml, $file)
126126
* Parses an individual Definition.
127127
*
128128
* @param \DOMElement $service
129+
* @param string $file
129130
*
130131
* @return Definition|null
131132
*/
132-
private function parseDefinition(\DOMElement $service)
133+
private function parseDefinition(\DOMElement $service, $file)
133134
{
134135
if ($alias = $service->getAttribute('alias')) {
135136
$public = true;
@@ -149,13 +150,22 @@ private function parseDefinition(\DOMElement $service)
149150

150151
foreach (array('class', 'scope', 'public', 'factory-class', 'factory-method', 'factory-service', 'synthetic', 'lazy', 'abstract') as $key) {
151152
if ($value = $service->getAttribute($key)) {
153+
if (in_array($key, array('factory-class', 'factory-method', 'factory-service'))) {
154+
trigger_error(sprintf('The "%s" attribute in file "%s" is deprecated since version 2.6 and will be removed in 3.0. Use the "factory" element instead.', $key, $file), E_USER_DEPRECATED);
155+
}
152156
$method = 'set'.str_replace('-', '', $key);
153157
$definition->$method(XmlUtils::phpize($value));
154158
}
155159
}
156160

157161
if ($value = $service->getAttribute('synchronized')) {
158-
$definition->setSynchronized(XmlUtils::phpize($value), 'request' !== (string) $service->getAttribute('id'));
162+
$triggerDeprecation = 'request' !== (string) $service->getAttribute('id');
163+
164+
if ($triggerDeprecation) {
165+
trigger_error(sprintf('The "synchronized" attribute in file "%s" is deprecated since version 2.7 and will be removed in 3.0.', $file), E_USER_DEPRECATED);
166+
}
167+
168+
$definition->setSynchronized(XmlUtils::phpize($value), $triggerDeprecation);
159169
}
160170

161171
if ($files = $this->getChildren($service, 'file')) {
@@ -173,7 +183,7 @@ private function parseDefinition(\DOMElement $service)
173183
$factoryService = $this->getChildren($factory, 'service');
174184

175185
if (isset($factoryService[0])) {
176-
$class = $this->parseDefinition($factoryService[0]);
186+
$class = $this->parseDefinition($factoryService[0], $file);
177187
} elseif ($childService = $factory->getAttribute('service')) {
178188
$class = new Reference($childService, ContainerInterface::EXCEPTION_ON_INVALID_REFERENCE, false);
179189
} else {
@@ -192,7 +202,7 @@ private function parseDefinition(\DOMElement $service)
192202
$configuratorService = $this->getChildren($configurator, 'service');
193203

194204
if (isset($configuratorService[0])) {
195-
$class = $this->parseDefinition($configuratorService[0]);
205+
$class = $this->parseDefinition($configuratorService[0], $file);
196206
} elseif ($childService = $configurator->getAttribute('service')) {
197207
$class = new Reference($childService, ContainerInterface::EXCEPTION_ON_INVALID_REFERENCE, false);
198208
} else {
@@ -233,7 +243,7 @@ private function parseDefinition(\DOMElement $service)
233243
}
234244

235245
/**
236-
* Parses a XML file to a \DOMDocument
246+
* Parses a XML file to a \DOMDocument.
237247
*
238248
* @param string $file Path to a file
239249
*
@@ -392,7 +402,7 @@ private function getArgumentsAsPhp(\DOMElement $node, $name, $lowercase = true)
392402
}
393403

394404
/**
395-
* Get child elements by name
405+
* Get child elements by name.
396406
*
397407
* @param \DOMNode $node
398408
* @param mixed $name

‎src/Symfony/Component/DependencyInjection/Loader/YamlFileLoader.php

Copy file name to clipboardExpand all lines: src/Symfony/Component/DependencyInjection/Loader/YamlFileLoader.php
+4Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,7 @@ private function parseDefinition($id, $service, $file)
172172
}
173173

174174
if (isset($service['synchronized'])) {
175+
trigger_error(sprintf('The "synchronized" key in file "%s" is deprecated since version 2.7 and will be removed in 3.0.', $file), E_USER_DEPRECATED);
175176
$definition->setSynchronized($service['synchronized'], 'request' !== $id);
176177
}
177178

@@ -201,14 +202,17 @@ private function parseDefinition($id, $service, $file)
201202
}
202203

203204
if (isset($service['factory_class'])) {
205+
trigger_error(sprintf('The "factory_class" key in file "%s" is deprecated since version 2.6 and will be removed in 3.0. Use "factory" instead.', $file), E_USER_DEPRECATED);
204206
$definition->setFactoryClass($service['factory_class']);
205207
}
206208

207209
if (isset($service['factory_method'])) {
210+
trigger_error(sprintf('The "factory_method" key in file "%s" is deprecated since version 2.6 and will be removed in 3.0. Use "factory" instead.', $file), E_USER_DEPRECATED);
208211
$definition->setFactoryMethod($service['factory_method']);
209212
}
210213

211214
if (isset($service['factory_service'])) {
215+
trigger_error(sprintf('The "factory_service" key in file "%s" is deprecated since version 2.6 and will be removed in 3.0. Use "factory" instead.', $file), E_USER_DEPRECATED);
212216
$definition->setFactoryService($service['factory_service']);
213217
}
214218

‎src/Symfony/Component/DependencyInjection/Tests/Fixtures/xml/legacy-services6.xml

Copy file name to clipboardExpand all lines: src/Symfony/Component/DependencyInjection/Tests/Fixtures/xml/legacy-services6.xml
+1Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,6 @@
66
<services>
77
<service id="constructor" class="FooClass" factory-method="getInstance" />
88
<service id="factory_service" factory-method="getInstance" factory-service="baz_factory" />
9+
<service id="request" class="Request" synthetic="true" synchronized="true" lazy="true"/>
910
</services>
1011
</container>

‎src/Symfony/Component/DependencyInjection/Tests/Fixtures/xml/services6.xml

Copy file name to clipboardExpand all lines: src/Symfony/Component/DependencyInjection/Tests/Fixtures/xml/services6.xml
-1Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,6 @@
4747
</service>
4848
<service id="alias_for_foo" alias="foo" />
4949
<service id="another_alias_for_foo" alias="foo" public="false" />
50-
<service id="request" class="Request" synthetic="true" synchronized="true" lazy="true"/>
5150
<service id="decorator_service" decorates="decorated" />
5251
<service id="decorator_service_with_name" decorates="decorated" decoration-inner-name="decorated.pif-pouf"/>
5352
<service id="new_factory1" class="FooBarClass">
+5Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
11
services:
22
constructor: { class: FooClass, factory_method: getInstance }
33
factory_service: { class: BazClass, factory_method: getInstance, factory_service: baz_factory }
4+
request:
5+
class: Request
6+
synthetic: true
7+
synchronized: true
8+
lazy: true

‎src/Symfony/Component/DependencyInjection/Tests/Fixtures/yaml/services6.yml

Copy file name to clipboardExpand all lines: src/Symfony/Component/DependencyInjection/Tests/Fixtures/yaml/services6.yml
-5Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,6 @@ services:
2323
another_alias_for_foo:
2424
alias: foo
2525
public: false
26-
request:
27-
class: Request
28-
synthetic: true
29-
synchronized: true
30-
lazy: true
3126
decorator_service:
3227
decorates: decorated
3328
decorator_service_with_name:

‎src/Symfony/Component/DependencyInjection/Tests/Loader/XmlFileLoaderTest.php

Copy file name to clipboardExpand all lines: src/Symfony/Component/DependencyInjection/Tests/Loader/XmlFileLoaderTest.php
+4-5Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -206,6 +206,10 @@ public function testLegacyLoadServices()
206206
$this->assertNull($services['factory_service']->getClass());
207207
$this->assertEquals('baz_factory', $services['factory_service']->getFactoryService());
208208
$this->assertEquals('getInstance', $services['factory_service']->getFactoryMethod());
209+
$this->assertTrue($services['request']->isSynthetic(), '->load() parses the synthetic flag');
210+
$this->assertTrue($services['request']->isSynchronized(), '->load() parses the synchronized flag');
211+
$this->assertTrue($services['request']->isLazy(), '->load() parses the lazy flag');
212+
$this->assertNull($services['request']->getDecoratedService());
209213
}
210214

211215
public function testLoadServices()
@@ -231,10 +235,6 @@ public function testLoadServices()
231235
$this->assertEquals(array(new Reference('baz', ContainerInterface::EXCEPTION_ON_INVALID_REFERENCE, false), 'getClass'), $services['new_factory2']->getFactory(), '->load() parses the factory tag');
232236
$this->assertEquals(array('BazClass', 'getInstance'), $services['new_factory3']->getFactory(), '->load() parses the factory tag');
233237

234-
$this->assertTrue($services['request']->isSynthetic(), '->load() parses the synthetic flag');
235-
$this->assertTrue($services['request']->isSynchronized(false), '->load() parses the synchronized flag');
236-
$this->assertTrue($services['request']->isLazy(), '->load() parses the lazy flag');
237-
238238
$aliases = $container->getAliases();
239239
$this->assertTrue(isset($aliases['alias_for_foo']), '->load() parses <service> elements');
240240
$this->assertEquals('foo', (string) $aliases['alias_for_foo'], '->load() parses aliases');
@@ -243,7 +243,6 @@ public function testLoadServices()
243243
$this->assertEquals('foo', (string) $aliases['another_alias_for_foo']);
244244
$this->assertFalse($aliases['another_alias_for_foo']->isPublic());
245245

246-
$this->assertNull($services['request']->getDecoratedService());
247246
$this->assertEquals(array('decorated', null), $services['decorator_service']->getDecoratedService());
248247
$this->assertEquals(array('decorated', 'decorated.pif-pouf'), $services['decorator_service_with_name']->getDecoratedService());
249248
}

‎src/Symfony/Component/DependencyInjection/Tests/Loader/YamlFileLoaderTest.php

Copy file name to clipboardExpand all lines: src/Symfony/Component/DependencyInjection/Tests/Loader/YamlFileLoaderTest.php
+4-5Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,10 @@ public function testLegacyLoadServices()
135135
$this->assertEquals('BazClass', $services['factory_service']->getClass());
136136
$this->assertEquals('baz_factory', $services['factory_service']->getFactoryService());
137137
$this->assertEquals('getInstance', $services['factory_service']->getFactoryMethod());
138+
$this->assertTrue($services['request']->isSynthetic(), '->load() parses the synthetic flag');
139+
$this->assertTrue($services['request']->isSynchronized(), '->load() parses the synchronized flag');
140+
$this->assertTrue($services['request']->isLazy(), '->load() parses the lazy flag');
141+
$this->assertNull($services['request']->getDecoratedService());
138142
}
139143

140144
public function testLoadServices()
@@ -160,10 +164,6 @@ public function testLoadServices()
160164
$this->assertEquals(array(new Reference('baz'), 'getClass'), $services['new_factory2']->getFactory(), '->load() parses the factory tag');
161165
$this->assertEquals(array('BazClass', 'getInstance'), $services['new_factory3']->getFactory(), '->load() parses the factory tag');
162166

163-
$this->assertTrue($services['request']->isSynthetic(), '->load() parses the synthetic flag');
164-
$this->assertTrue($services['request']->isSynchronized(false), '->load() parses the synchronized flag');
165-
$this->assertTrue($services['request']->isLazy(), '->load() parses the lazy flag');
166-
167167
$aliases = $container->getAliases();
168168
$this->assertTrue(isset($aliases['alias_for_foo']), '->load() parses aliases');
169169
$this->assertEquals('foo', (string) $aliases['alias_for_foo'], '->load() parses aliases');
@@ -172,7 +172,6 @@ public function testLoadServices()
172172
$this->assertEquals('foo', (string) $aliases['another_alias_for_foo']);
173173
$this->assertFalse($aliases['another_alias_for_foo']->isPublic());
174174

175-
$this->assertNull($services['request']->getDecoratedService());
176175
$this->assertEquals(array('decorated', null), $services['decorator_service']->getDecoratedService());
177176
$this->assertEquals(array('decorated', 'decorated.pif-pouf'), $services['decorator_service_with_name']->getDecoratedService());
178177
}

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.