改进composer自动加载

This commit is contained in:
thinkphp
2018-04-18 18:08:38 +08:00
parent e3a4faedbf
commit ac9375254a

View File

@@ -23,7 +23,7 @@ class Loader
/** /**
* @var array 类名映射 * @var array 类名映射
*/ */
protected static $map = []; protected static $classMap = [];
/** /**
* @var array 命名空间别名 * @var array 命名空间别名
@@ -99,8 +99,8 @@ class Loader
private static function findFile($class) private static function findFile($class)
{ {
// 类库映射 // 类库映射
if (!empty(self::$map[$class])) { if (!empty(self::$classMap[$class])) {
return self::$map[$class]; return self::$classMap[$class];
} }
// 查找 PSR-4 // 查找 PSR-4
@@ -156,7 +156,7 @@ class Loader
} }
// 找不到则设置映射为 false 并返回 // 找不到则设置映射为 false 并返回
return self::$map[$class] = false; return self::$classMap[$class] = false;
} }
/** /**
@@ -169,9 +169,9 @@ class Loader
public static function addClassMap($class, $map = '') public static function addClassMap($class, $map = '')
{ {
if (is_array($class)) { if (is_array($class)) {
self::$map = array_merge(self::$map, $class); self::$classMap = array_merge(self::$classMap, $class);
} else { } else {
self::$map[$class] = $map; self::$classMap[$class] = $map;
} }
} }
@@ -292,12 +292,12 @@ class Loader
$declaredClass = get_declared_classes(); $declaredClass = get_declared_classes();
$composerClass = array_pop($declaredClass); $composerClass = array_pop($declaredClass);
self::$prefixLengthsPsr4 = $composerClass::$prefixLengthsPsr4; foreach (['prefixLengthsPsr4', 'prefixDirsPsr4', 'fallbackDirsPsr4', 'prefixesPsr0', 'fallbackDirsPsr0', 'classMap'] as $attr) {
if (property_exists($composerClass, $attr)) {
self::${$attr} = $composerClass::${$attr};
}
}
self::$prefixDirsPsr4 = property_exists($composerClass, 'prefixDirsPsr4') ? $composerClass::$prefixDirsPsr4 : [];
self::$prefixesPsr0 = property_exists($composerClass, 'prefixesPsr0') ? $composerClass::$prefixesPsr0 : [];
self::$map = property_exists($composerClass, 'classMap') ? $composerClass::$classMap : [];
} else { } else {
self::registerComposerLoader(); self::registerComposerLoader();
} }