diff --git a/README.md b/README.md index a767c415..36c8f47d 100644 --- a/README.md +++ b/README.md @@ -253,7 +253,9 @@ class CarFactoryProvider extends ServiceProviderInterface return [ // Note that Garage should already be defined in container Garage::class => function(ContainerInterface $container, Garage $garage) { - $car = $container->get(CarFactory::class)->create(); + $car = $container + ->get(CarFactory::class) + ->create(); $garage->setCar($car); return $garage; @@ -362,7 +364,9 @@ while ($request = $psr7->acceptRequest()) { $response = $application->handle($request); $psr7->respond($response); $application->afterEmit($response); - $container->get(\Yiisoft\Di\StateResetter::class)->reset(); + $container + ->get(\Yiisoft\Di\StateResetter::class) + ->reset(); gc_collect_cycles(); } ``` @@ -449,11 +453,12 @@ In order to configure delegates use additional config: use Yiisoft\Di\Container; use Yiisoft\Di\ContainerConfig; -$config = ContainerConfig::create()->withDelegates([ - function (ContainerInterface $container): ContainerInterface { - // ... - } -]); +$config = ContainerConfig::create() + ->withDelegates([ + function (ContainerInterface $container): ContainerInterface { + // ... + } + ]); $container = new Container($config); diff --git a/src/ExtensibleService.php b/src/ExtensibleService.php index 428ac959..199e5eea 100644 --- a/src/ExtensibleService.php +++ b/src/ExtensibleService.php @@ -62,7 +62,8 @@ public function addExtension(callable $closure): void public function resolve(ContainerInterface $container) { /** @var mixed $service */ - $service = DefinitionNormalizer::normalize($this->definition, $this->id)->resolve($container); + $service = DefinitionNormalizer::normalize($this->definition, $this->id) + ->resolve($container); foreach ($this->extensions as $extension) { /** @var mixed $result */ diff --git a/tests/Benchmark/ContainerBench.php b/tests/Benchmark/ContainerBench.php index e6ab3e4b..226ce1e5 100644 --- a/tests/Benchmark/ContainerBench.php +++ b/tests/Benchmark/ContainerBench.php @@ -77,14 +77,38 @@ public function before(): void $this->composite = new CompositeContainer(); // We attach the dummy containers multiple times, to see what would happen if we have lots of them. - $this->composite->attach(new Container(ContainerConfig::create()->withDefinitions($definitions2))); - $this->composite->attach(new Container(ContainerConfig::create()->withDefinitions($definitions3))); - $this->composite->attach(new Container(ContainerConfig::create()->withDefinitions($definitions2))); - $this->composite->attach(new Container(ContainerConfig::create()->withDefinitions($definitions3))); - $this->composite->attach(new Container(ContainerConfig::create()->withDefinitions($definitions2))); - $this->composite->attach(new Container(ContainerConfig::create()->withDefinitions($definitions3))); - $this->composite->attach(new Container(ContainerConfig::create()->withDefinitions($definitions2))); - $this->composite->attach(new Container(ContainerConfig::create()->withDefinitions($definitions3))); + $this->composite->attach(new Container( + ContainerConfig::create() + ->withDefinitions($definitions2)) + ); + $this->composite->attach(new Container( + ContainerConfig::create() + ->withDefinitions($definitions3)) + ); + $this->composite->attach(new Container( + ContainerConfig::create() + ->withDefinitions($definitions2)) + ); + $this->composite->attach(new Container( + ContainerConfig::create() + ->withDefinitions($definitions3)) + ); + $this->composite->attach(new Container( + ContainerConfig::create() + ->withDefinitions($definitions2)) + ); + $this->composite->attach(new Container( + ContainerConfig::create() + ->withDefinitions($definitions3)) + ); + $this->composite->attach(new Container( + ContainerConfig::create() + ->withDefinitions($definitions2)) + ); + $this->composite->attach(new Container( + ContainerConfig::create() + ->withDefinitions($definitions3)) + ); } /** @@ -99,7 +123,10 @@ public function benchConstruct(): void for ($i = 0; $i < self::SERVICE_COUNT; $i++) { $definitions["service$i"] = PropertyTestClass::class; } - $container = new Container(ContainerConfig::create()->withDefinitions($definitions)); + $container = new Container( + ContainerConfig::create() + ->withDefinitions($definitions) + ); } /** @@ -115,7 +142,10 @@ public function benchSequentialLookups($params): void if (isset($params['otherDefinitions'])) { $definitions = array_merge($definitions, $params['otherDefinitions']); } - $container = new Container(ContainerConfig::create()->withDefinitions($definitions)); + $container = new Container( + ContainerConfig::create() + ->withDefinitions($definitions) + ); for ($i = 0; $i < self::SERVICE_COUNT / 2; $i++) { // Do array lookup. $index = $this->indexes[$i]; @@ -136,7 +166,10 @@ public function benchRandomLookups($params): void if (isset($params['otherDefinitions'])) { $definitions = array_merge($definitions, $params['otherDefinitions']); } - $container = new Container(ContainerConfig::create()->withDefinitions($definitions)); + $container = new Container( + ContainerConfig::create() + ->withDefinitions($definitions) + ); for ($i = 0; $i < self::SERVICE_COUNT / 2; $i++) { // Do array lookup. $index = $this->randomIndexes[$i]; @@ -157,7 +190,10 @@ public function benchRandomLookupsComposite($params): void if (isset($params['otherDefinitions'])) { $definitions = array_merge($definitions, $params['otherDefinitions']); } - $container = new Container(ContainerConfig::create()->withDefinitions($definitions)); + $container = new Container( + ContainerConfig::create() + ->withDefinitions($definitions) + ); $this->composite->attach($container); for ($i = 0; $i < self::SERVICE_COUNT / 2; $i++) { // Do array lookup. diff --git a/tests/Benchmark/ContainerMethodHasBench.php b/tests/Benchmark/ContainerMethodHasBench.php index 48d095bc..5ba8d07a 100644 --- a/tests/Benchmark/ContainerMethodHasBench.php +++ b/tests/Benchmark/ContainerMethodHasBench.php @@ -37,7 +37,10 @@ public function before(): void } $definitions['service'] = PropertyTestClass::class; - $this->container = new Container(ContainerConfig::create()->withDefinitions($definitions)); + $this->container = new Container( + ContainerConfig::create() + ->withDefinitions($definitions) + ); } public function benchPredefinedExisting(): void diff --git a/tests/Unit/CompositePsrContainerOverYiisoftTest.php b/tests/Unit/CompositePsrContainerOverYiisoftTest.php index 6af8ba25..cbb0bd83 100644 --- a/tests/Unit/CompositePsrContainerOverYiisoftTest.php +++ b/tests/Unit/CompositePsrContainerOverYiisoftTest.php @@ -58,20 +58,52 @@ public function testResetterInCompositeContainerWithExternalResetter(): void $engineMarkOne = $composite->get('engineMarkOne'); $engineMarkTwo = $composite->get('engineMarkTwo'); - $this->assertSame(42, $composite->get('engineMarkOne')->getNumber()); - $this->assertSame(43, $composite->get('engineMarkTwo')->getNumber()); + $this->assertSame( + 42, + $composite + ->get('engineMarkOne') + ->getNumber(), + ); + $this->assertSame( + 43, + $composite + ->get('engineMarkTwo') + ->getNumber(), + ); $engineMarkOne->setNumber(45); $engineMarkTwo->setNumber(46); - $this->assertSame(45, $composite->get('engineMarkOne')->getNumber()); - $this->assertSame(46, $composite->get('engineMarkTwo')->getNumber()); + $this->assertSame( + 45, + $composite + ->get('engineMarkOne') + ->getNumber(), + ); + $this->assertSame( + 46, + $composite + ->get('engineMarkTwo') + ->getNumber(), + ); - $composite->get(StateResetter::class)->reset(); + $composite + ->get(StateResetter::class) + ->reset(); $this->assertSame($engineMarkOne, $composite->get('engineMarkOne')); $this->assertSame($engineMarkTwo, $composite->get('engineMarkTwo')); - $this->assertSame(42, $composite->get('engineMarkOne')->getNumber()); - $this->assertSame(43, $composite->get('engineMarkTwo')->getNumber()); + $this->assertSame( + 42, + $composite + ->get('engineMarkOne') + ->getNumber(), + ); + $this->assertSame( + 43, + $composite + ->get('engineMarkTwo') + ->getNumber(), + ); } public function testNotFoundException(): void diff --git a/tests/Unit/ContainerTest.php b/tests/Unit/ContainerTest.php index cbffde53..89231142 100644 --- a/tests/Unit/ContainerTest.php +++ b/tests/Unit/ContainerTest.php @@ -97,9 +97,10 @@ public function testNullableClassDependency(): void public function testOptionalResolvableClassDependency(): void { $container = new Container( - ContainerConfig::create()->withDefinitions([ - EngineInterface::class => EngineMarkOne::class, - ]) + ContainerConfig::create() + ->withDefinitions([ + EngineInterface::class => EngineMarkOne::class, + ]) ); $this->assertTrue($container->has(OptionalConcreteDependency::class)); @@ -1139,7 +1140,9 @@ public function testTagsAsArrayInConstructor(): void ]); $container = new Container($config); - $engines = $container->get(Car::class)->getMoreEngines(); + $engines = $container + ->get(Car::class) + ->getMoreEngines(); $this->assertIsArray($engines); $this->assertCount(2, $engines); @@ -1175,12 +1178,24 @@ public function testResetter(bool $strictMode): void $container = new Container($config); $engine = $container->get(EngineInterface::class); - $this->assertSame(42, $container->get(EngineInterface::class)->getNumber()); + $this->assertSame( + 42, + $container + ->get(EngineInterface::class) + ->getNumber(), + ); $engine->setNumber(45); - $this->assertSame(45, $container->get(EngineInterface::class)->getNumber()); + $this->assertSame( + 45, + $container + ->get(EngineInterface::class) + ->getNumber(), + ); - $container->get(StateResetter::class)->reset(); + $container + ->get(StateResetter::class) + ->reset(); $this->assertSame($engine, $container->get(EngineInterface::class)); $this->assertSame(42, $engine->getNumber()); @@ -1207,12 +1222,24 @@ static function (ContainerInterface $container) { $container = new Container($config); $engine = $container->get(EngineInterface::class); - $this->assertSame(42, $container->get(EngineInterface::class)->getNumber()); + $this->assertSame( + 42, + $container + ->get(EngineInterface::class) + ->getNumber(), + ); $engine->setNumber(45); - $this->assertSame(45, $container->get(EngineInterface::class)->getNumber()); + $this->assertSame( + 45, + $container + ->get(EngineInterface::class) + ->getNumber(), + ); - $container->get(StateResetter::class)->reset(); + $container + ->get(StateResetter::class) + ->reset(); $this->assertSame($engine, $container->get(EngineInterface::class)); $this->assertSame(42, $engine->getNumber()); @@ -1255,24 +1282,51 @@ static function (ContainerInterface $container) { $container = new Container($config); $engine = $container->get(EngineInterface::class); - $this->assertSame(42, $container->get(EngineInterface::class)->getNumber()); + $this->assertSame( + 42, + $container + ->get(EngineInterface::class) + ->getNumber(), + ); $car = $container->get(Car::class); - $this->assertInstanceOf(ColorPink::class, $container->get(Car::class)->getColor()); + $this->assertInstanceOf( + ColorPink::class, + $container + ->get(Car::class) + ->getColor(), + ); $engine->setNumber(45); - $this->assertSame(45, $container->get(EngineInterface::class)->getNumber()); + $this->assertSame( + 45, + $container + ->get(EngineInterface::class) + ->getNumber(), + ); $car->setColor(new ColorRed()); - $this->assertInstanceOf(ColorRed::class, $container->get(Car::class)->getColor()); + $this->assertInstanceOf( + ColorRed::class, + $container + ->get(Car::class) + ->getColor(), + ); - $container->get(StateResetter::class)->reset(); + $container + ->get(StateResetter::class) + ->reset(); $this->assertSame($engine, $container->get(EngineInterface::class)); $this->assertSame(42, $engine->getNumber()); $this->assertSame($car, $container->get(Car::class)); - $this->assertInstanceOf(ColorPink::class, $container->get(Car::class)->getColor()); + $this->assertInstanceOf( + ColorPink::class, + $container + ->get(Car::class) + ->getColor(), + ); } public function dataResetterInProviderDefinitions(): array @@ -1323,7 +1377,9 @@ public function getExtensions(): array $engine = $container->get(EngineInterface::class); $engine->setNumber(45); - $container->get(StateResetter::class)->reset(); + $container + ->get(StateResetter::class) + ->reset(); $this->assertSame($engine, $container->get(EngineInterface::class)); $this->assertSame(42, $engine->getNumber()); @@ -1367,7 +1423,9 @@ public function getExtensions(): array $engine = $container->get(EngineInterface::class); $engine->setNumber(45); - $container->get(StateResetter::class)->reset(); + $container + ->get(StateResetter::class) + ->reset(); $this->assertSame($engine, $container->get(EngineInterface::class)); $this->assertSame(42, $engine->getNumber()); @@ -1405,14 +1463,33 @@ public function testNestedResetter(): void $engine->setNumber(45); $car->setColor(new ColorRed()); - $this->assertSame(45, $container->get(Car::class)->getEngine()->getNumber()); - $this->assertSame('red', $container->get(Car::class)->getColor()->getColor()); + $this->assertSame( + 45, + $container + ->get(Car::class) + ->getEngine() + ->getNumber(), + ); + $this->assertSame( + 'red', + $container + ->get(Car::class) + ->getColor() + ->getColor(), + ); - $container->get(StateResetter::class)->reset(); + $container + ->get(StateResetter::class) + ->reset(); $this->assertSame($engine, $container->get(EngineInterface::class)); $this->assertSame($car, $container->get(Car::class)); - $this->assertSame(42, $car->getEngine()->getNumber()); + $this->assertSame( + 42, + $car + ->getEngine() + ->getNumber(), + ); $this->assertSame($color, $car->getColor()); } @@ -1448,20 +1525,52 @@ public function testResetterInCompositeContainer(): void $engineMarkOne = $composite->get('engineMarkOne'); $engineMarkTwo = $composite->get('engineMarkTwo'); - $this->assertSame(42, $composite->get('engineMarkOne')->getNumber()); - $this->assertSame(43, $composite->get('engineMarkTwo')->getNumber()); + $this->assertSame( + 42, + $composite + ->get('engineMarkOne') + ->getNumber(), + ); + $this->assertSame( + 43, + $composite + ->get('engineMarkTwo') + ->getNumber(), + ); $engineMarkOne->setNumber(45); $engineMarkTwo->setNumber(46); - $this->assertSame(45, $composite->get('engineMarkOne')->getNumber()); - $this->assertSame(46, $composite->get('engineMarkTwo')->getNumber()); + $this->assertSame( + 45, + $composite + ->get('engineMarkOne') + ->getNumber(), + ); + $this->assertSame( + 46, + $composite + ->get('engineMarkTwo') + ->getNumber(), + ); - $composite->get(StateResetter::class)->reset(); + $composite + ->get(StateResetter::class) + ->reset(); $this->assertSame($engineMarkOne, $composite->get('engineMarkOne')); $this->assertSame($engineMarkTwo, $composite->get('engineMarkTwo')); - $this->assertSame(42, $composite->get('engineMarkOne')->getNumber()); - $this->assertSame(43, $composite->get('engineMarkTwo')->getNumber()); + $this->assertSame( + 42, + $composite + ->get('engineMarkOne') + ->getNumber(), + ); + $this->assertSame( + 43, + $composite + ->get('engineMarkTwo') + ->getNumber(), + ); } public function testCircularReferenceExceptionWhileResolvingProviders(): void @@ -1571,7 +1680,12 @@ public function testDelegateLookup(): void $garage = $container->get(Garage::class); $this->assertInstanceOf(Garage::class, $garage); - $this->assertInstanceOf(EngineMarkOne::class, $garage->getCar()->getEngine()); + $this->assertInstanceOf( + EngineMarkOne::class, + $garage + ->getCar() + ->getEngine(), + ); } public function testNonClosureDelegate(): void @@ -1658,7 +1772,8 @@ public function testNonServiceProviderInterfaceProvider(): void public function testStrictModeDisabled(): void { - $config = ContainerConfig::create()->withStrictMode(false); + $config = ContainerConfig::create() + ->withStrictMode(false); $container = new Container($config); $this->assertTrue($container->has(EngineMarkOne::class)); @@ -1668,7 +1783,8 @@ public function testStrictModeDisabled(): void public function testStrictModeEnabled(): void { - $config = ContainerConfig::create()->withStrictMode(true); + $config = ContainerConfig::create() + ->withStrictMode(true); $container = new Container($config); $this->assertFalse($container->has(EngineMarkOne::class)); diff --git a/tests/Unit/ServiceProviderTest.php b/tests/Unit/ServiceProviderTest.php index 7ad93876..73007e5b 100644 --- a/tests/Unit/ServiceProviderTest.php +++ b/tests/Unit/ServiceProviderTest.php @@ -50,8 +50,18 @@ private function ensureProviderRegisterExtensions($provider): void $this->assertTrue($container->has(Car::class)); $this->assertTrue($container->has(EngineInterface::class)); $this->assertInstanceOf(Car::class, $container->get(Car::class)); - $this->assertInstanceOf(ColorRed::class, $container->get(Car::class)->getColor()); - $this->assertInstanceOf(EngineMarkTwo::class, $container->get(Car::class)->getEngine()); + $this->assertInstanceOf( + ColorRed::class, + $container + ->get(Car::class) + ->getColor(), + ); + $this->assertInstanceOf( + EngineMarkTwo::class, + $container + ->get(Car::class) + ->getEngine(), + ); } private function ensureProviderRegisterDefinitions($provider): void @@ -123,7 +133,12 @@ public function testExtensionOverride(): void ]); $container = new Container($config); - $this->assertInstanceOf(ColorRed::class, $container->get(Car::class)->getColor()); + $this->assertInstanceOf( + ColorRed::class, + $container + ->get(Car::class) + ->getColor(), + ); } public function testExtensionReturnedNull(): void @@ -140,7 +155,12 @@ public function testExtensionReturnedNull(): void ]); $container = new Container($config); - $this->assertInstanceOf(ColorRed::class, $container->get(Car::class)->getColor()); + $this->assertInstanceOf( + ColorRed::class, + $container + ->get(Car::class) + ->getColor(), + ); } public function testClassMethodsWithExtensible(): void