コード例 #1
0
ファイル: AliasProviderTest.php プロジェクト: sysvyz/brunt
 public function testAliasProviderLazy()
 {
     $injector = new Injector(null);
     $injector->providers([Engine::class => ClassProvider::init(Engine::class)->lazy(), "AAA" => AliasProvider::init(Engine::class)]);
     $engine = $injector->get('AAA');
     $this->assertInstanceOf(Engine::class, $engine);
 }
コード例 #2
0
ファイル: ValueProviderTest.php プロジェクト: sysvyz/brunt
 public function testProvidersSingletonLazy()
 {
     // Arrange
     $injector = new Injector(null);
     $injector->providers(['BASE_URL' => ValueProvider::init('http://sysvyz.org/')->singleton()->lazy()]);
     $this->assertEquals($injector->{'BASE_URL'}, 'http://sysvyz.org/');
 }
コード例 #3
0
 public function testProvidersSingletonLazy()
 {
     $injector = new Injector(null);
     $injector->providers(['tire' => ValueFactoryProvider::init(function () {
         return new Tire();
     })->lazy()->singleton()]);
     $this->assertEquals($injector->{'tire'}->type, 'Tire');
     $injector->{'tire'}->a = "a";
     $this->assertEquals($injector->{'tire'}->a, 'a');
     $this->assertNotSame($injector->{'tire'}, $injector->{'tire'});
     $this->assertNotInstanceOf(Tire::class, $injector->{'tire'});
     $this->assertInstanceOf(LazyProxyObject::class, $injector->{'tire'});
     $this->assertInstanceOf(Tire::class, $injector->{'tire'}->getInstance());
     $this->assertSame($injector->{'tire'}->getInstance(), $injector->{'tire'}->getInstance());
 }
コード例 #4
0
 public function testProvidersLazySingleton2()
 {
     // Arrange
     $injector = new Injector(null);
     $injector->providers([Tire::class => ClassProvider::init(HeavyTire::class)->singleton()->lazy()]);
     /** @var Tire|ProxyTrait $entity */
     $entity = $injector->{Tire::class};
     $this->assertInstanceOf(Tire::class, $entity);
     $this->assertInstanceOf(HeavyTire::class, $entity);
     //not
     $this->assertEquals($entity->type, 'HeavyTire');
     $this->assertSame($entity->getInstance(), $injector->{Tire::class}->getInstance());
     $entity->a = "a";
     $this->assertEquals("a", $injector->{Tire::class}->a);
 }
コード例 #5
0
ファイル: ClassProviderTest.php プロジェクト: sysvyz/brunt
 public function testNonInjectableDependencyFail()
 {
     // Arrange
     $injector = new Injector(null);
     $injector->providers([NonInjectableWrapper::class => ClassProvider::init(NonInjectableWrapper::class)]);
     /** @var NonInjectableWrapper $wrapper */
     try {
         $wrapper = $injector->get(NonInjectableWrapper::class);
         $this->assertTrue(false);
     } catch (InjectableException $e) {
         $this->assertTrue(true);
     }
 }
コード例 #6
0
ファイル: InjectorTest.php プロジェクト: sysvyz/brunt
 public function testMultiple()
 {
     // Arrange
     $injector = new Injector(null);
     $injector->providers([Engine::class => ClassProvider::init(Engine::class)]);
     /** @var Engine $engine */
     $engine = $injector->get(Engine::class);
     /** @var Engine $engine2 */
     $engine2 = $injector->get(Engine::class);
     $this->assertNotSame($engine, $engine2);
 }