From dcfa78cf8c23e5ace015fd0ce73036ceff3cc3e7 Mon Sep 17 00:00:00 2001 From: Helmut Hummel <helmut.hummel@typo3.org> Date: Sun, 1 Mar 2015 15:22:48 +0100 Subject: [PATCH] [BUGFIX] Respect interfaces as well when checking class existence As a backwards compatibility measure, the composer class loader checked for class existence before requiring a class file, which could only happen if wrong class name casing was used before. We now enable this also for interfaces. Releases: master, 6.2 Resolves: #65434 Change-Id: I6dc1dc6cbf8cb7018ceeff1eb881c80658c11e33 Reviewed-on: http://review.typo3.org/37412 Reviewed-by: Wouter Wolters <typo3@wouterwolters.nl> Tested-by: Wouter Wolters <typo3@wouterwolters.nl> Reviewed-by: Christian Kuhn <lolli@schwarzbu.ch> Tested-by: Christian Kuhn <lolli@schwarzbu.ch> --- .../Classes/Composer/ClassAliasLoader.php | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/typo3/contrib/vendor/helhum/class-alias-loader/Classes/Composer/ClassAliasLoader.php b/typo3/contrib/vendor/helhum/class-alias-loader/Classes/Composer/ClassAliasLoader.php index 5def4465113a..7822cf140461 100644 --- a/typo3/contrib/vendor/helhum/class-alias-loader/Classes/Composer/ClassAliasLoader.php +++ b/typo3/contrib/vendor/helhum/class-alias-loader/Classes/Composer/ClassAliasLoader.php @@ -100,10 +100,7 @@ class ClassAliasLoader { */ public function loadClass($className) { if (!$this->caseSensitiveClassLoading) { - $lowerCasedClassName = strtolower($className); - if ($this->composerClassLoader->findFile($lowerCasedClassName)) { - return $this->composerClassLoader->loadClass($lowerCasedClassName); - } + $className = strtolower($className); } return $this->composerClassLoader->loadClass($className); } @@ -117,9 +114,9 @@ class ClassAliasLoader { * @return bool */ protected function loadOriginalClassAndSetAliases($originalClassName) { - if (class_exists($originalClassName, false) || $this->loadClass($originalClassName)) { + if ($this->classOrInterfaceExists($originalClassName) || $this->loadClass($originalClassName)) { foreach ($this->aliasMap['classNameToAliasMapping'][$originalClassName] as $aliasClassName) { - if (!class_exists($aliasClassName, false)) { + if (!$this->classOrInterfaceExists($aliasClassName)) { class_alias($originalClassName, $aliasClassName); } } @@ -128,6 +125,14 @@ class ClassAliasLoader { return false; } + /** + * @param string $className + * @return bool + */ + protected function classOrInterfaceExists($className) { + return class_exists($className, false) || interface_exists($className, false); + } + /** * Act as a proxy for method calls to composer class loader * -- GitLab