@@ -26,13 +26,13 @@ protected function processValue($value, $isRoot = false)
26
26
if (!$ value instanceof Definition) {
27
27
return parent ::processValue ($ value , $ isRoot );
28
28
}
29
- if ($ value instanceof ChildDefinition) {
30
- $ this ->resolveDefinition ($ value );
31
- }
32
- $ class = $ value ->getClass ();
29
+
30
+ $ class = $ value instanceof ChildDefinition ? $ this ->resolveDefinition ($ value ) : $ value ->getClass ();
31
+
33
32
if (!$ class || false !== strpos ($ class , '% ' ) || !$ instanceof = $ value ->getInstanceofConditionals ()) {
34
33
return parent ::processValue ($ value , $ isRoot );
35
34
}
35
+ $ value ->setInstanceofConditionals (array ());
36
36
37
37
foreach ($ instanceof as $ interface => $ definition ) {
38
38
if ($ interface !== $ class && (!$ this ->container ->getReflectionClass ($ interface ) || !$ this ->container ->getReflectionClass ($ class ))) {
@@ -56,24 +56,21 @@ private function resolveDefinition(ChildDefinition $definition)
56
56
}
57
57
58
58
$ parentDef = $ this ->container ->findDefinition ($ parent );
59
- if ($ parentDef instanceof ChildDefinition) {
60
- $ this ->resolveDefinition ($ parentDef );
61
- }
62
-
63
- if (!isset ($ definition ->getChanges ()['class ' ])) {
64
- $ definition ->setClass ($ parentDef ->getClass ());
65
- }
59
+ $ class = $ parentDef instanceof ChildDefinition ? $ this ->resolveDefinition ($ parentDef ) : $ parentDef ->getClass ();
60
+ $ class = $ definition ->getClass () ?: $ class ;
66
61
67
62
// append parent tags when inheriting is enabled
68
63
if ($ definition ->getInheritTags ()) {
64
+ $ definition ->setInheritTags (false);
65
+
69
66
foreach ($ parentDef ->getTags () as $ k => $ v ) {
70
67
foreach ($ v as $ v ) {
71
68
$ definition ->addTag ($ k , $ v );
72
69
}
73
70
}
74
71
}
75
72
76
- $ definition -> setInheritTags ( false ) ;
73
+ return $ class ;
77
74
}
78
75
79
76
private function mergeDefinition (Definition $ def , ChildDefinition $ definition )
0 commit comments