Browse Source

Avoid duplicate App container creation

Signed-off-by: Joas Schilling <coding@schilljs.com>
tags/v16.0.0beta1
Joas Schilling 5 years ago
parent
commit
c5ab74348c
No account linked to committer's email address
2 changed files with 19 additions and 1 deletions
  1. 13
    0
      lib/private/ServerContainer.php
  2. 6
    1
      lib/public/AppFramework/App.php

+ 13
- 0
lib/private/ServerContainer.php View File

@@ -71,6 +71,19 @@ class ServerContainer extends SimpleContainer {
$this->appContainers[strtolower(App::buildAppNamespace($appName, ''))] = $container;
}

/**
* @param string $appName
* @return DIContainer
* @throws QueryException
*/
public function getRegisteredAppContainer(string $appName) {
if (isset($this->appContainers[strtolower(App::buildAppNamespace($appName, ''))])) {
return $this->appContainers[strtolower(App::buildAppNamespace($appName, ''))];
}

throw new QueryException();
}

/**
* @param string $namespace
* @param string $sensitiveNamespace

+ 6
- 1
lib/public/AppFramework/App.php View File

@@ -66,11 +66,16 @@ class App {


/**
* @param string $appName
* @param array $urlParams an array with variables extracted from the routes
* @since 6.0.0
*/
public function __construct(string $appName, array $urlParams = []) {
$this->container = new \OC\AppFramework\DependencyInjection\DIContainer($appName, $urlParams);
try {
$this->container = \OC::$server->getRegisteredAppContainer($appName);
} catch (QueryException $e) {
$this->container = new \OC\AppFramework\DependencyInjection\DIContainer($appName, $urlParams);
}
}

/**

Loading…
Cancel
Save