@@ -121,7 +121,7 @@ public function testLoadAnonymousServices()
121
121
$ loader = new XmlFileLoader ($ container , new FileLocator (self ::$ fixturesPath .'/xml ' ));
122
122
$ loader ->load ('services5.xml ' );
123
123
$ services = $ container ->getDefinitions ();
124
- $ this ->assertCount (4 , $ services , '->load() attributes unique ids to anonymous services ' );
124
+ $ this ->assertCount (6 , $ services , '->load() attributes unique ids to anonymous services ' );
125
125
126
126
// anonymous service as an argument
127
127
$ args = $ services ['foo ' ]->getArguments ();
@@ -130,6 +130,7 @@ public function testLoadAnonymousServices()
130
130
$ this ->assertTrue (isset ($ services [(string ) $ args [0 ]]), '->load() makes a reference to the created ones ' );
131
131
$ inner = $ services [(string ) $ args [0 ]];
132
132
$ this ->assertEquals ('BarClass ' , $ inner ->getClass (), '->load() uses the same configuration as for the anonymous ones ' );
133
+ $ this ->assertFalse ($ inner ->isPublic ());
133
134
134
135
// inner anonymous services
135
136
$ args = $ inner ->getArguments ();
@@ -138,14 +139,33 @@ public function testLoadAnonymousServices()
138
139
$ this ->assertTrue (isset ($ services [(string ) $ args [0 ]]), '->load() makes a reference to the created ones ' );
139
140
$ inner = $ services [(string ) $ args [0 ]];
140
141
$ this ->assertEquals ('BazClass ' , $ inner ->getClass (), '->load() uses the same configuration as for the anonymous ones ' );
142
+ $ this ->assertFalse ($ inner ->isPublic ());
141
143
142
144
// anonymous service as a property
143
145
$ properties = $ services ['foo ' ]->getProperties ();
144
146
$ property = $ properties ['p ' ];
145
147
$ this ->assertInstanceOf ('Symfony \\Component \\DependencyInjection \\Reference ' , $ property , '->load() converts anonymous services to references to "normal" services ' );
146
148
$ this ->assertTrue (isset ($ services [(string ) $ property ]), '->load() makes a reference to the created ones ' );
147
149
$ inner = $ services [(string ) $ property ];
148
- $ this ->assertEquals ('BazClass ' , $ inner ->getClass (), '->load() uses the same configuration as for the anonymous ones ' );
150
+ $ this ->assertEquals ('BuzClass ' , $ inner ->getClass (), '->load() uses the same configuration as for the anonymous ones ' );
151
+ $ this ->assertFalse ($ inner ->isPublic ());
152
+
153
+ // "wild" service
154
+ $ service = $ container ->findTaggedServiceIds ('biz_tag ' );
155
+ $ this ->assertCount (1 , $ service );
156
+
157
+ foreach ($ service as $ id => $ tag ) {
158
+ $ service = $ container ->getDefinition ($ id );
159
+ }
160
+ $ this ->assertEquals ('BizClass ' , $ service ->getClass (), '->load() uses the same configuration as for the anonymous ones ' );
161
+ $ this ->assertFalse ($ service ->isPublic ());
162
+
163
+ // anonymous services are shared when using decoration definitions
164
+ $ container ->compile ();
165
+ $ services = $ container ->getDefinitions ();
166
+ $ fooArgs = $ services ['foo ' ]->getArguments ();
167
+ $ barArgs = $ services ['bar ' ]->getArguments ();
168
+ $ this ->assertSame ($ fooArgs [0 ], $ barArgs [0 ]);
149
169
}
150
170
151
171
public function testLoadServices ()
0 commit comments