Simplify autoloader logic

This commit is contained in:
Kijin Sung 2021-03-08 16:51:39 +09:00
parent ae60728efc
commit 77b522249d

View file

@ -94,23 +94,11 @@ spl_autoload_register(function($class_name)
{ {
$filename = false; $filename = false;
$lc_class_name = str_replace('\\', '/', strtolower($class_name)); $lc_class_name = str_replace('\\', '/', strtolower($class_name));
switch (substr($lc_class_name, 0, 10)) if (preg_match('!^rhymix/(framework|addons|modules|plugins)/(.+)$!', $lc_class_name, $matches))
{ {
// Rhymix Framework classes. $filename = RX_BASEDIR . ($matches[1] === 'framework' ? 'common/framework' : $matches[1]) . '/' . $matches[2] . '.php';
case 'rhymix/fra': }
$filename = RX_BASEDIR . 'common/framework/' . substr($lc_class_name, 17) . '.php'; elseif (isset($GLOBALS['RX_AUTOLOAD_FILE_MAP'][$lc_class_name]))
break;
// Rhymix Plugin classes.
case 'rhymix/plu':
$filename = RX_BASEDIR . 'plugins/' . substr($lc_class_name, 15) . '.php';
break;
// Rhymix Module classes.
case 'rhymix/mod':
$filename = RX_BASEDIR . 'modules/' . substr($lc_class_name, 15) . '.php';
break;
// XE compatible classes.
default:
if (isset($GLOBALS['RX_AUTOLOAD_FILE_MAP'][$lc_class_name]))
{ {
$filename = RX_BASEDIR . $GLOBALS['RX_AUTOLOAD_FILE_MAP'][$lc_class_name]; $filename = RX_BASEDIR . $GLOBALS['RX_AUTOLOAD_FILE_MAP'][$lc_class_name];
} }
@ -121,7 +109,6 @@ spl_autoload_register(function($class_name)
$filename .= (isset($matches[3]) && $matches[3]) ? ('.' . strtolower($matches[3])) : '.class'; $filename .= (isset($matches[3]) && $matches[3]) ? ('.' . strtolower($matches[3])) : '.class';
$filename .= '.php'; $filename .= '.php';
} }
}
if ($filename && file_exists($filename)) if ($filename && file_exists($filename))
{ {
include $filename; include $filename;