Пример #1
0
 public function testCreateMultiParamsClassWithArguments()
 {
     $container = new Container();
     try {
         $container->create(CreateTestHasMultiParam::class);
         static::fail();
     } catch (CannotResolveException $e) {
         static::assertEquals(CreateTestHasMultiParam::class, $e->getClass());
         static::assertEquals('param1', $e->getParameter());
     }
     $container->bind(CreateTestDependencyInterface::class, CreateTestDependency::class);
     try {
         $container->create(CreateTestHasMultiParam::class);
         static::fail();
     } catch (CannotResolveException $e) {
         static::assertEquals(CreateTestHasMultiParam::class, $e->getClass());
         static::assertEquals('param2', $e->getParameter());
     }
     // only sequential
     $object = $container->create(CreateTestHasMultiParam::class, [$param1 = new CreateTestDependency(), $param2 = new stdClass()]);
     static::assertSame($param1, $object->param1);
     static::assertSame($param2, $object->param2);
     static::assertSame('param3', $object->param3);
     static::assertSame('param4', $object->param4);
     // only assoc
     $object = $container->create(CreateTestHasMultiParam::class, ['param2' => $param2 = new stdClass(), 'param4' => $param4 = new stdClass()]);
     static::assertInstanceOf(CreateTestDependencyInterface::class, $object->param1);
     static::assertSame($param2, $object->param2);
     static::assertSame('param3', $object->param3);
     static::assertSame($param4, $object->param4);
     // complex
     $object = $container->create(CreateTestHasMultiParam::class, [$param1 = new CreateTestDependency(), $param2 = new stdClass(), 'param4' => $param4 = new stdClass(), 'param3' => $param3 = new stdClass()]);
     static::assertSame($param1, $object->param1);
     static::assertSame($param2, $object->param2);
     static::assertSame($param3, $object->param3);
     static::assertSame($param4, $object->param4);
 }