@@ -97,6 +97,23 @@ interface IFooFactory
9797 public function create (Baz $ baz = NULL );
9898}
9999
100+ class TestClass
101+ {
102+ public $ foo ;
103+ public $ bar ;
104+ public function __construct ($ foo , $ bar )
105+ {
106+ $ this ->foo = $ foo ;
107+ $ this ->bar = $ bar ;
108+ }
109+ }
110+
111+ interface ITestClassFactory
112+ {
113+ /** @return TestClass */
114+ public function create ($ bar );
115+ }
116+
100117class TestExtension extends DI \CompilerExtension
101118{
102119 public function loadConfiguration ()
@@ -184,6 +201,26 @@ Assert::same($container->getService('bar'), $foo->bar);
184201Assert::null ( $ foo ->baz );
185202
186203
204+ Assert::type ( 'IFooFactory ' , $ container ->getService ('fooFactory4 ' ) );
205+ $ foo = $ container ->getService ('fooFactory4 ' )->create ($ container ->getService ('baz ' ));
206+ Assert::type ( 'Foo ' , $ foo );
207+ Assert::type ( 'Bar ' , $ foo ->bar );
208+ Assert::same ($ container ->getService ('bar ' ), $ foo ->bar );
209+ Assert::type ( 'Baz ' , $ foo ->baz );
210+ Assert::same ($ container ->getService ('baz ' ), $ foo ->baz );
211+ $ foo = $ container ->getService ('fooFactory4 ' )->create ();
212+ Assert::type ( 'Foo ' , $ foo );
213+ Assert::type ( 'Bar ' , $ foo ->bar );
214+ Assert::same ($ container ->getService ('bar ' ), $ foo ->bar );
215+ Assert::null ( $ foo ->baz );
216+
217+
218+ Assert::type ( 'ITestClassFactory ' , $ container ->getService ('factory5 ' ) );
219+ $ obj = $ container ->getService ('factory5 ' )->create ('bar ' );
220+ Assert::same ('foo ' , $ obj ->foo );
221+ Assert::same ('bar ' , $ obj ->bar );
222+
223+
187224class Bad1
188225{
189226 public function __construct (Bar $ bar )
0 commit comments