From e23d547fbbffc7076f5ed9d6c66e4066751e989c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juli=C3=A1n=20Guti=C3=A9rrez?= Date: Wed, 26 Apr 2017 01:11:39 +0200 Subject: [PATCH] reference container itself --- src/ContainerBuilder.php | 8 +++++++- src/definitions.php | 7 ++++--- tests/PHPDI/ContainerTest.php | 4 ++++ 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/src/ContainerBuilder.php b/src/ContainerBuilder.php index a4c8e1a..9c712c2 100644 --- a/src/ContainerBuilder.php +++ b/src/ContainerBuilder.php @@ -15,6 +15,7 @@ use DI\Container as DIContainer; use DI\ContainerBuilder as DIContainerBuilder; +use Psr\Container\ContainerInterface; /** * Helper to create and configure a Container. @@ -50,7 +51,12 @@ public static function build(Configuration $configuration = null): DIContainer // Custom definitions $containerBuilder->addDefinitions(self::parseDefinitions($configuration->getDefinitions())); - return $containerBuilder->build(); + $container = $containerBuilder->build(); + + // Add container itself + $container->set(ContainerInterface::class, $container); + + return $container; } /** diff --git a/src/definitions.php b/src/definitions.php index 250c4d0..0116092 100644 --- a/src/definitions.php +++ b/src/definitions.php @@ -64,6 +64,7 @@ 'router' => \DI\create(Router::class) ->method('setCacheFile', \DI\get('settings.routerCacheFile')), + Router::class => \DI\get('router'), 'phpErrorHandler' => \DI\create(PhpError::class) ->constructor(\DI\get('settings.displayErrorDetails')), @@ -89,9 +90,9 @@ return new CallableResolver(new InvokerResolver($container)); }, - // Aliases - Router::class => \DI\get('router'), - // Replaced by used configuration on container build Configuration::class => null, + + // Replaced by generated container + ContainerInterface::class => null, ]; diff --git a/tests/PHPDI/ContainerTest.php b/tests/PHPDI/ContainerTest.php index f902e40..40bcd55 100644 --- a/tests/PHPDI/ContainerTest.php +++ b/tests/PHPDI/ContainerTest.php @@ -17,6 +17,7 @@ use Jgut\Slim\PHPDI\ContainerBuilder; use Jgut\Slim\PHPDI\FoundHandler; use PHPUnit\Framework\TestCase; +use Psr\Container\ContainerInterface; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Slim\Handlers\Error; @@ -122,5 +123,8 @@ public function testDefaultServices() self::assertTrue($this->container->has(Configuration::class)); self::assertInstanceOf(Configuration::class, $this->container->get(Configuration::class)); + + self::assertTrue($this->container->has(ContainerInterface::class)); + self::assertEquals($this->container, $this->container->get(ContainerInterface::class)); } }