public function testExtend() { $diContainer = new DiContainer(); $diContainer['shared_service'] = $diContainer->share(function () { return new Service(); }); $value = 12345; $diContainer->extend('shared_service', function ($sharedService) use($value) { $sharedService->value = $value; return $sharedService; }); $serviceOne = $diContainer['shared_service']; $this->assertInstanceOf('Service', $serviceOne); $this->assertEquals($value, $serviceOne->value); $serviceTwo = $diContainer['shared_service']; $this->assertInstanceOf('Service', $serviceTwo); $this->assertEquals($value, $serviceTwo->value); $this->assertSame($serviceOne, $serviceTwo); }