From: Christoph Wurst Date: Thu, 16 Jul 2020 15:06:17 +0000 (+0200) Subject: Make the bootstrap context return ContainerInterface instances X-Git-Tag: v20.0.0beta1~193^2~2 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=e029055e766298c5852eedabf06ff42b06a50198;p=nextcloud-server.git Make the bootstrap context return ContainerInterface instances Signed-off-by: Christoph Wurst --- diff --git a/lib/private/AppFramework/Bootstrap/BootContext.php b/lib/private/AppFramework/Bootstrap/BootContext.php index d206884c0b7..7c2582a7269 100644 --- a/lib/private/AppFramework/Bootstrap/BootContext.php +++ b/lib/private/AppFramework/Bootstrap/BootContext.php @@ -26,24 +26,24 @@ declare(strict_types=1); namespace OC\AppFramework\Bootstrap; use OCP\AppFramework\Bootstrap\IBootContext; -use OCP\AppFramework\IAppContainer; use OCP\IServerContainer; +use Psr\Container\ContainerInterface; class BootContext implements IBootContext { - /** @var IAppContainer */ + /** @var ContainerInterface */ private $appContainer; - public function __construct(IAppContainer $appContainer) { + public function __construct(ContainerInterface $appContainer) { $this->appContainer = $appContainer; } - public function getAppContainer(): IAppContainer { + public function getAppContainer(): ContainerInterface { return $this->appContainer; } - public function getServerContainer(): IServerContainer { - return $this->appContainer->getServer(); + public function getServerContainer(): ContainerInterface { + return $this->appContainer->get(IServerContainer::class); } public function injectFn(callable $fn) { diff --git a/lib/private/AppFramework/Bootstrap/FunctionInjector.php b/lib/private/AppFramework/Bootstrap/FunctionInjector.php index cb1dc7d3f37..25c1fbc0be6 100644 --- a/lib/private/AppFramework/Bootstrap/FunctionInjector.php +++ b/lib/private/AppFramework/Bootstrap/FunctionInjector.php @@ -27,17 +27,17 @@ namespace OC\AppFramework\Bootstrap; use Closure; use OCP\AppFramework\QueryException; -use OCP\IContainer; +use Psr\Container\ContainerInterface; use ReflectionFunction; use ReflectionParameter; use function array_map; class FunctionInjector { - /** @var IContainer */ + /** @var ContainerInterface */ private $container; - public function __construct(IContainer $container) { + public function __construct(ContainerInterface $container) { $this->container = $container; } @@ -47,14 +47,14 @@ class FunctionInjector { // First we try by type (more likely these days) if (($type = $param->getType()) !== null) { try { - return $this->container->query($type->getName()); + return $this->container->get($type->getName()); } catch (QueryException $ex) { // Ignore and try name as well } } // Second we try by name (mostly for primitives) try { - return $this->container->query($param->getName()); + return $this->container->get($param->getName()); } catch (QueryException $ex) { // As a last resort we pass `null` if allowed if ($type !== null && $type->allowsNull()) { diff --git a/lib/public/AppFramework/App.php b/lib/public/AppFramework/App.php index 2f55fd45140..de1cbcb64e8 100644 --- a/lib/public/AppFramework/App.php +++ b/lib/public/AppFramework/App.php @@ -120,6 +120,7 @@ class App { /** * @return IAppContainer * @since 6.0.0 + * @todo make this return a ContainerInterface as well */ public function getContainer(): IAppContainer { return $this->container; diff --git a/lib/public/AppFramework/Bootstrap/IBootContext.php b/lib/public/AppFramework/Bootstrap/IBootContext.php index ee0bef6a5fa..86232cef4ad 100644 --- a/lib/public/AppFramework/Bootstrap/IBootContext.php +++ b/lib/public/AppFramework/Bootstrap/IBootContext.php @@ -41,20 +41,20 @@ interface IBootContext { * * Useful to register and query app-specific services * - * @return IAppContainer|ContainerInterface + * @return ContainerInterface|IAppContainer * @since 20.0.0 */ - public function getAppContainer(): IAppContainer; + public function getAppContainer(): ContainerInterface; /** * Get hold of the server DI container * * Useful to register and query system-wide services * - * @return IServerContainer + * @return ContainerInterface|IServerContainer * @since 20.0.0 */ - public function getServerContainer(): IServerContainer; + public function getServerContainer(): ContainerInterface; /** * Invoke the given callable and inject all parameters based on their types