改进composer自动加载

This commit is contained in:
yunwuxin
2018-04-18 18:26:03 +08:00
parent ac9375254a
commit 64e7a27f74

View File

@@ -56,9 +56,9 @@ class Loader
private static $fallbackDirsPsr0 = [];
/**
* @var array 自动加载的文件
* @var array 需要加载的文件
*/
private static $autoloadFiles = [];
private static $files = [];
/**
* 自动加载
@@ -292,12 +292,11 @@ class Loader
$declaredClass = get_declared_classes();
$composerClass = array_pop($declaredClass);
foreach (['prefixLengthsPsr4', 'prefixDirsPsr4', 'fallbackDirsPsr4', 'prefixesPsr0', 'fallbackDirsPsr0', 'classMap'] as $attr) {
foreach (['prefixLengthsPsr4', 'prefixDirsPsr4', 'fallbackDirsPsr4', 'prefixesPsr0', 'fallbackDirsPsr0', 'classMap', 'files'] as $attr) {
if (property_exists($composerClass, $attr)) {
self::${$attr} = $composerClass::${$attr};
}
}
} else {
self::registerComposerLoader();
}
@@ -348,22 +347,20 @@ class Loader
self::addClassMap($classMap);
}
}
if (is_file(VENDOR_PATH . 'composer/autoload_files.php')) {
self::$files = require VENDOR_PATH . 'composer/autoload_files.php';
}
}
// 加载composer autofile文件
public static function loadComposerAutoloadFiles()
{
if (is_file(VENDOR_PATH . 'composer/autoload_files.php')) {
$includeFiles = require VENDOR_PATH . 'composer/autoload_files.php';
foreach ($includeFiles as $fileIdentifier => $file) {
if (isset($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
continue;
}
foreach (self::$files as $fileIdentifier => $file) {
if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
__require_file($file);
if (empty(self::$autoloadFiles[$fileIdentifier])) {
__require_file($file);
self::$autoloadFiles[$fileIdentifier] = true;
}
$GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
}
}
}