修正Loader类

This commit is contained in:
thinkphp
2017-11-15 14:40:16 +08:00
parent dd050112a7
commit 941279bc0b

View File

@@ -77,7 +77,9 @@ class Loader
private static function findFile($class) private static function findFile($class)
{ {
// 类库映射 // 类库映射
if (!empty(self::$map[$class])) return self::$map[$class]; if (!empty(self::$map[$class])) {
return self::$map[$class];
}
// 查找 PSR-4 // 查找 PSR-4
$logicalPathPsr4 = strtr($class, '\\', DS) . EXT; $logicalPathPsr4 = strtr($class, '\\', DS) . EXT;
@@ -259,14 +261,6 @@ class Loader
// 注册系统自动加载 // 注册系统自动加载
spl_autoload_register($autoload ?: 'think\\Loader::autoload', true, true); spl_autoload_register($autoload ?: 'think\\Loader::autoload', true, true);
// 加载类库映射文件
if (is_file(RUNTIME_PATH . 'classmap' . EXT)) {
self::addClassMap(__include_file(RUNTIME_PATH . 'classmap' . EXT));
}
// Composer 自动加载支持
if (is_dir(VENDOR_PATH . 'composer')) self::registerComposerLoader();
// 注册命名空间定义 // 注册命名空间定义
self::addNamespace([ self::addNamespace([
'think' => LIB_PATH . 'think' . DS, 'think' => LIB_PATH . 'think' . DS,
@@ -274,6 +268,16 @@ class Loader
'traits' => LIB_PATH . 'traits' . DS, 'traits' => LIB_PATH . 'traits' . DS,
]); ]);
// 加载类库映射文件
if (is_file(RUNTIME_PATH . 'classmap' . EXT)) {
self::addClassMap(__include_file(RUNTIME_PATH . 'classmap' . EXT));
}
// Composer 自动加载支持
if (is_dir(VENDOR_PATH . 'composer')) {
self::registerComposerLoader();
}
// 自动加载 extend 目录 // 自动加载 extend 目录
self::$fallbackDirsPsr4[] = rtrim(EXTEND_PATH, DS); self::$fallbackDirsPsr4[] = rtrim(EXTEND_PATH, DS);
} }
@@ -301,7 +305,10 @@ class Loader
if (is_file(VENDOR_PATH . 'composer/autoload_classmap.php')) { if (is_file(VENDOR_PATH . 'composer/autoload_classmap.php')) {
$classMap = require VENDOR_PATH . 'composer/autoload_classmap.php'; $classMap = require VENDOR_PATH . 'composer/autoload_classmap.php';
if ($classMap) self::addClassMap($classMap); if ($classMap) {
self::addClassMap($classMap);
}
} }
if (is_file(VENDOR_PATH . 'composer/autoload_files.php')) { if (is_file(VENDOR_PATH . 'composer/autoload_files.php')) {
@@ -329,7 +336,9 @@ class Loader
$key = $class . $baseUrl; $key = $class . $baseUrl;
$class = str_replace(['.', '#'], [DS, '.'], $class); $class = str_replace(['.', '#'], [DS, '.'], $class);
if (isset($_file[$key])) return true; if (isset($_file[$key])) {
return true;
}
if (empty($baseUrl)) { if (empty($baseUrl)) {
list($name, $class) = explode(DS, $class, 2); list($name, $class) = explode(DS, $class, 2);
@@ -355,7 +364,10 @@ class Loader
foreach ($baseUrl as $path) { foreach ($baseUrl as $path) {
$filename = $path . DS . $class . $ext; $filename = $path . DS . $class . $ext;
if (is_file($filename)) break; if (is_file($filename)) {
break;
}
} }
} else { } else {
$filename = $baseUrl . $class . $ext; $filename = $baseUrl . $class . $ext;
@@ -388,7 +400,9 @@ class Loader
{ {
$uid = $name . $layer; $uid = $name . $layer;
if (isset(self::$instance[$uid])) return self::$instance[$uid]; if (isset(self::$instance[$uid])) {
return self::$instance[$uid];
}
list($module, $class) = self::getModuleAndClass($name, $layer, $appendSuffix); list($module, $class) = self::getModuleAndClass($name, $layer, $appendSuffix);
@@ -421,7 +435,9 @@ class Loader
{ {
list($module, $class) = self::getModuleAndClass($name, $layer, $appendSuffix); list($module, $class) = self::getModuleAndClass($name, $layer, $appendSuffix);
if (class_exists($class)) return App::invokeClass($class); if (class_exists($class)) {
return App::invokeClass($class);
}
if ($empty) { if ($empty) {
$emptyClass = self::parseClass($module, $layer, $empty, $appendSuffix); $emptyClass = self::parseClass($module, $layer, $empty, $appendSuffix);
@@ -447,10 +463,14 @@ class Loader
public static function validate($name = '', $layer = 'validate', $appendSuffix = false, $common = 'common') public static function validate($name = '', $layer = 'validate', $appendSuffix = false, $common = 'common')
{ {
$name = $name ?: Config::get('default_validate'); $name = $name ?: Config::get('default_validate');
if (empty($name)) return new Validate; if (empty($name)) {
return new Validate;
}
$uid = $name . $layer; $uid = $name . $layer;
if (isset(self::$instance[$uid])) return self::$instance[$uid]; if (isset(self::$instance[$uid])) {
return self::$instance[$uid];
}
list($module, $class) = self::getModuleAndClass($name, $layer, $appendSuffix); list($module, $class) = self::getModuleAndClass($name, $layer, $appendSuffix);