]> source.dussan.org Git - nextcloud-server.git/commitdiff
Avoid container dance for appName
authorJulius Härtl <jus@bitgrid.net>
Wed, 16 Nov 2022 17:54:25 +0000 (18:54 +0100)
committerJulius Härtl <jus@bitgrid.net>
Wed, 7 Dec 2022 21:32:04 +0000 (22:32 +0100)
Sicne the appName is always passed for the DIContainer we can avoid
using the container query logic and instead store and use a property

Signed-off-by: Julius Härtl <jus@bitgrid.net>
lib/private/AppFramework/DependencyInjection/DIContainer.php

index 4c413a8ae873480e41ab04171acb49642553c699..5fd363ee963cc8252a8b0eb021e6b1f13af8da50 100644 (file)
@@ -79,6 +79,7 @@ use Psr\Log\LoggerInterface;
  * @deprecated 20.0.0
  */
 class DIContainer extends SimpleContainer implements IAppContainer {
+       private string $appName;
 
        /**
         * @var array
@@ -94,8 +95,9 @@ class DIContainer extends SimpleContainer implements IAppContainer {
         * @param array $urlParams
         * @param ServerContainer|null $server
         */
-       public function __construct($appName, $urlParams = [], ServerContainer $server = null) {
+       public function __construct(string $appName, array $urlParams = [], ServerContainer $server = null) {
                parent::__construct();
+               $this->appName = $appName;
                $this['appName'] = $appName;
                $this['urlParams'] = $urlParams;
 
@@ -437,6 +439,9 @@ class DIContainer extends SimpleContainer implements IAppContainer {
        }
 
        public function query(string $name, bool $autoload = true) {
+               if ($name === 'AppName' || $name === 'appName') {
+                       return $this->appName;
+               }
                try {
                        return $this->queryNoFallback($name);
                } catch (QueryException $firstException) {
@@ -461,11 +466,11 @@ class DIContainer extends SimpleContainer implements IAppContainer {
 
                if ($this->offsetExists($name)) {
                        return parent::query($name);
-               } elseif ($this['AppName'] === 'settings' && strpos($name, 'OC\\Settings\\') === 0) {
+               } elseif ($this->appName === 'settings' && strpos($name, 'OC\\Settings\\') === 0) {
                        return parent::query($name);
-               } elseif ($this['AppName'] === 'core' && strpos($name, 'OC\\Core\\') === 0) {
+               } elseif ($this->appName === 'core' && strpos($name, 'OC\\Core\\') === 0) {
                        return parent::query($name);
-               } elseif (strpos($name, \OC\AppFramework\App::buildAppNamespace($this['AppName']) . '\\') === 0) {
+               } elseif (strpos($name, \OC\AppFramework\App::buildAppNamespace($this->appName) . '\\') === 0) {
                        return parent::query($name);
                }