Example #1
0
 public function testResolveException()
 {
     $container = new Container();
     try {
         $container->get(AutoResolveTestExceptionDepth1::class);
         static::fail();
     } catch (CannotResolveException $e) {
         static::assertEquals('unknown', $e->getParameter());
         static::assertEquals(AutoResolveTestExceptionDepth1::class, $e->getClass());
     }
     try {
         $container->get(AutoResolveTestDepth2::class);
         static::fail();
     } catch (CannotResolveException $e) {
         static::assertEquals('unknown', $e->getParameter());
         static::assertEquals(AutoResolveTestExceptionDepth1::class, $e->getClass());
     }
 }
Example #2
0
 public function testAutoWiringEachOther()
 {
     $container = new Container();
     $container->bind(Reader::class, AnnotationReader::class);
     // add annotation.
     $container->bind(AutoWiringTestEachOther1::class)->wire();
     $container->bind(AutoWiringTestEachOther2::class)->wire();
     $object = $container->get(AutoWiringTestEachOther1::class);
     static::assertInstanceOf(AutoWiringTestEachOther2::class, $object->getDepend());
     static::assertInstanceOf(AutoWiringTestEachOther1::class, $object->getDepend()->getDepend());
     $container = new Container();
     $container->bind(Reader::class, AnnotationReader::class);
     // add annotation.
     $container->bind(AutoWiringTestEachOther1::class)->wire();
     $container->bind(AutoWiringTestEachOther2::class)->wire();
     $object = $container->get(AutoWiringTestEachOther2::class);
     static::assertInstanceOf(AutoWiringTestEachOther1::class, $object->getDepend());
     static::assertInstanceOf(AutoWiringTestEachOther2::class, $object->getDepend()->getDepend());
 }
Example #3
0
<?php

namespace PHPSTORM_META;

$STATIC_METHOD_TYPES = [\Interop\Container\ContainerInterface::get('') => ["" == "@"], \Wandu\DI\Container::get('') => ["" == "@"]];
Example #4
0
 public function testWith()
 {
     $container = new Container();
     $instance1 = new ArrayObject();
     $instance2 = new ArrayObject();
     $instance3 = new ArrayObject();
     $instance4 = new ArrayObject();
     $container->instance('instance1', $instance1);
     $container->instance('instance2', $instance2);
     $container->instance('instance3', $instance3);
     $container->instance('instance4', $instance4);
     static::assertNotSame($instance1, $instance2);
     // same is real same?
     static::assertSame($instance1, $container->get('instance1'));
     static::assertSame($instance2, $container->get('instance2'));
     static::assertSame($instance3, $container->get('instance3'));
     static::assertSame($instance4, $container->get('instance4'));
     static::assertSame($container, $container->get(Container::class));
     static::assertSame($container, $container->get(ContainerInterface::class));
     static::assertSame($container, $container->get(InteropContainer::class));
     static::assertSame($container, $container->get('container'));
     $addedInstance1 = new ArrayObject();
     $addedInstance2 = new ArrayObject();
     $otherContainer = $container->with(['added_instance1' => $addedInstance1, 'added_instance2' => $addedInstance2]);
     static::assertNotEquals($otherContainer, $container);
     static::assertFalse($container->has('added_instance1'));
     static::assertFalse($container->has('added_instance2'));
     static::assertTrue($otherContainer->has('added_instance1'));
     static::assertTrue($otherContainer->has('added_instance2'));
     static::assertSame($instance1, $otherContainer->get('instance1'));
     static::assertSame($instance2, $otherContainer->get('instance2'));
     static::assertSame($instance3, $otherContainer->get('instance3'));
     static::assertSame($instance4, $otherContainer->get('instance4'));
     static::assertSame($addedInstance1, $otherContainer->get('added_instance1'));
     static::assertSame($addedInstance2, $otherContainer->get('added_instance2'));
     static::assertSame($otherContainer, $otherContainer->get(Container::class));
     static::assertSame($otherContainer, $otherContainer->get(ContainerInterface::class));
     static::assertSame($otherContainer, $otherContainer->get(InteropContainer::class));
     static::assertSame($otherContainer, $otherContainer->get('container'));
 }