File tree
7 files changed
+64
-26
lines changed- src/Symfony
- Bundle/FrameworkBundle
- DependencyInjection/Compiler
- Tests/DependencyInjection/Compiler
- Component/DependencyInjection
- Exception
- Tests
7 files changed
+64
-26
lines changedLines changed: 24 additions & 6 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
18 | 18 |
| |
19 | 19 |
| |
20 | 20 |
| |
| 21 | + | |
21 | 22 |
| |
22 | 23 |
| |
23 | 24 |
| |
| |||
37 | 38 |
| |
38 | 39 |
| |
39 | 40 |
| |
| 41 | + | |
40 | 42 |
| |
41 | 43 |
| |
42 | 44 |
| |
43 | 45 |
| |
44 | 46 |
| |
45 | 47 |
| |
46 | 48 |
| |
47 |
| - | |
| 49 | + | |
48 | 50 |
| |
49 | 51 |
| |
50 | 52 |
| |
51 |
| - | |
52 |
| - | |
53 |
| - | |
54 |
| - | |
55 |
| - | |
| 53 | + | |
| 54 | + | |
56 | 55 |
| |
57 | 56 |
| |
58 | 57 |
| |
| |||
85 | 84 |
| |
86 | 85 |
| |
87 | 86 |
| |
| 87 | + | |
| 88 | + | |
| 89 | + | |
88 | 90 |
| |
89 | 91 |
| |
90 | 92 |
| |
91 | 93 |
| |
92 | 94 |
| |
93 | 95 |
| |
94 | 96 |
| |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
95 | 113 |
| |
96 | 114 |
| |
97 | 115 |
| |
|
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
93 | 93 |
| |
94 | 94 |
| |
95 | 95 |
| |
96 |
| - | |
| 96 | + | |
97 | 97 |
| |
98 | 98 |
| |
99 | 99 |
| |
|
Lines changed: 2 additions & 1 deletion
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
41 | 41 |
| |
42 | 42 |
| |
43 | 43 |
| |
44 |
| - | |
| 44 | + | |
45 | 45 |
| |
46 | 46 |
| |
47 | 47 |
| |
| |||
75 | 75 |
| |
76 | 76 |
| |
77 | 77 |
| |
| 78 | + | |
78 | 79 |
| |
79 | 80 |
| |
80 | 81 |
| |
|
Lines changed: 10 additions & 16 deletions
@@ -20,6 +20,7 @@
20
20
use Symfony\Component\DependencyInjection\Exception\RuntimeException;
21
21
use Symfony\Component\DependencyInjection\Exception\ServiceCircularReferenceException;
22
22
use Symfony\Component\DependencyInjection\Exception\ServiceNotFoundException;
23
+use Symfony\Component\DependencyInjection\Exception\UnresolvedServiceDefinitionException;
23
24
use Symfony\Component\DependencyInjection\Extension\ExtensionInterface;
24
25
use Symfony\Component\DependencyInjection\ParameterBag\EnvPlaceholderParameterBag;
25
26
use Symfony\Component\Config\Resource\FileResource;
@@ -424,7 +425,7 @@ public function get($id, $invalidBehavior = ContainerInterface::EXCEPTION_ON_INV
424
425
}
425
426
426
427
if (!isset($this->definitions[$id]) && isset($this->aliasDefinitions[$id])) {
427
- return $this->get($this->aliasDefinitions[$id]);
428
+ return $this->get($this->aliasDefinitions[$id], $invalidBehavior);
428
429
}
429
430
430
431
try {
@@ -441,6 +442,12 @@ public function get($id, $invalidBehavior = ContainerInterface::EXCEPTION_ON_INV
441
442
442
443
try {
443
444
$service = $this->createService($definition, $id);
445
+ } catch (UnresolvedServiceDefinitionException $e) {
446
+ if (ContainerInterface::EXCEPTION_ON_INVALID_REFERENCE !== $invalidBehavior) {
447
+ return;
448
+ }
449
+
450
+ throw $e;
444
451
} finally {
445
452
unset($this->loading[$id]);
446
453
}
@@ -835,8 +842,8 @@ public function findDefinition($id)
835
842
*/
836
843
private function createService(Definition $definition, $id, $tryProxy = true)
837
844
{
838
- if ($definition instanceof DefinitionDecorator) {
839
- $definition = $this->resolveDefinitionDecorator($definition, $id);
845
+ if ('Symfony\Component\DependencyInjection\Definition' !== get_class($definition)) {
846
+ throw new UnresolvedServiceDefinitionException(sprintf('Constructing service "%s" from a %s is not supported at build time.', $id, get_class($definition)));
840
847
}
841
848
842
849
if ($definition->isSynthetic()) {
@@ -1124,19 +1131,6 @@ private function callMethod($service, $call)
1124
1131
call_user_func_array(array($service, $call[0]), $this->resolveServices($this->getParameterBag()->unescapeValue($this->getParameterBag()->resolveValue($call[1]))));
1125
1132
}
1126
1133
1127
- private function resolveDefinitionDecorator(DefinitionDecorator $definition, $id)
1128
- {
1129
- if (!$this->has($parent = $definition->getParent())) {
1130
- throw new RuntimeException(sprintf('Service "%s": Parent definition "%s" does not exist.', $id, $parent));
1131
- }
1132
- $parentDef = $this->findDefinition($parent);
1133
- if ($parentDef instanceof DefinitionDecorator) {
1134
- $parentDef = $this->resolveDefinitionDecorator($parentDef, $parent);
1135
- }
1136
-
1137
- return $definition->resolveChanges($parentDef);
1138
- }
1139
-
1140
1134
/**
1141
1135
* Shares a given service in the container.
1142
1136
*
Lines changed: 1 addition & 1 deletion
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
283 | 283 |
| |
284 | 284 |
| |
285 | 285 |
| |
286 |
| - | |
| 286 | + | |
287 | 287 |
| |
288 | 288 |
| |
289 | 289 |
| |
|
Lines changed: 21 additions & 0 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + |
Lines changed: 5 additions & 1 deletion
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
413 | 413 |
| |
414 | 414 |
| |
415 | 415 |
| |
| 416 | + | |
| 417 | + | |
| 418 | + | |
| 419 | + | |
416 | 420 |
| |
417 | 421 |
| |
418 | 422 |
| |
419 | 423 |
| |
420 | 424 |
| |
421 | 425 |
| |
422 | 426 |
| |
423 |
| - | |
| 427 | + | |
424 | 428 |
| |
425 | 429 |
| |
426 | 430 |
| |
|
0 commit comments