From cbe01a34349d2f8d123c885184af47c8048ac6f1 Mon Sep 17 00:00:00 2001 From: Jaime Perez Crespo <jaime.perez@uninett.no> Date: Wed, 9 Mar 2016 15:35:46 +0100 Subject: [PATCH] Add support for interfaces in our temporary autoloaders, not only for classes. --- lib/SimpleSAML/Module.php | 9 +++++---- lib/_autoload_modules.php | 9 ++++----- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/lib/SimpleSAML/Module.php b/lib/SimpleSAML/Module.php index c9ff286f1..515f4ab14 100644 --- a/lib/SimpleSAML/Module.php +++ b/lib/SimpleSAML/Module.php @@ -42,14 +42,15 @@ class Module } require_once($file); - if (!class_exists($className, false)) { + if (!class_exists($className, false) && !interface_exists($className, false)) { // the file exists, but the class is not defined. Is it using namespaces? $nspath = join('\\', $path); - if (class_exists('SimpleSAML\Module\\'.$module.'\\'.$nspath)) { + if (class_exists('SimpleSAML\Module\\'.$module.'\\'.$nspath) || + interface_exists('SimpleSAML\Module\\'.$module.'\\'.$nspath)) { // the class has been migrated, create an alias and warn about it \SimpleSAML\Logger::warning( - "The class '$className' is now using namespaces, please use 'SimpleSAML\\Module\\$module\\". - "$nspath' instead." + "The class or interface '$className' is now using namespaces, please use 'SimpleSAML\\Module\\". + $module."\\".$nspath."' instead." ); class_alias("SimpleSAML\\Module\\$module\\$nspath", $className); } diff --git a/lib/_autoload_modules.php b/lib/_autoload_modules.php index 3e0c6cecf..0903896ba 100644 --- a/lib/_autoload_modules.php +++ b/lib/_autoload_modules.php @@ -31,18 +31,17 @@ function temporaryLoader($class) } // it exists, so it's not yet migrated to namespaces - if (class_exists($class, false)) { + if (class_exists($class, false) || interface_exists($class, false)) { return; } // it didn't exist, try to see if it was migrated to namespaces $new = join('\\', $path); - if (class_exists($new, false)) { // do not try to autoload it if it doesn't exist! It should! + if (class_exists($new, false) || interface_exists($class, false)) { + // do not try to autoload it if it doesn't exist! It should! class_alias($new, $class); - SimpleSAML\Logger::warning("The class '$class' is now using namespaces, please use '$new'."); + SimpleSAML\Logger::warning("The class or interface '$class' is now using namespaces, please use '$new'."); } - - } spl_autoload_register("temporaryLoader"); -- GitLab