1
0
Fork 0
mirror of https://github.com/composer/composer synced 2025-05-09 00:22:53 +00:00

Speedup autoloading on PHP 5.6 & 7.0+ using static arrays

This commit is contained in:
Nicolas Grekas 2016-04-11 12:08:27 +02:00
parent 40c14709f7
commit fd2f51cea8
18 changed files with 401 additions and 88 deletions

View file

@ -23,24 +23,34 @@ class ComposerAutoloaderInitFilesAutoload
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
spl_autoload_unregister(array('ComposerAutoloaderInitFilesAutoload', 'loadClassLoader'));
$map = require __DIR__ . '/autoload_namespaces.php';
foreach ($map as $namespace => $path) {
$loader->set($namespace, $path);
}
if (PHP_VERSION_ID >= 50600) {
require_once __DIR__ . '/autoload_static.php';
$map = require __DIR__ . '/autoload_psr4.php';
foreach ($map as $namespace => $path) {
$loader->setPsr4($namespace, $path);
}
\call_user_func(\Composer\Autoload\ComposerStaticInitFilesAutoload::getInitializer($loader));
} else {
$map = require __DIR__ . '/autoload_namespaces.php';
foreach ($map as $namespace => $path) {
$loader->set($namespace, $path);
}
$classMap = require __DIR__ . '/autoload_classmap.php';
if ($classMap) {
$loader->addClassMap($classMap);
$map = require __DIR__ . '/autoload_psr4.php';
foreach ($map as $namespace => $path) {
$loader->setPsr4($namespace, $path);
}
$classMap = require __DIR__ . '/autoload_classmap.php';
if ($classMap) {
$loader->addClassMap($classMap);
}
}
$loader->register(true);
$includeFiles = require __DIR__ . '/autoload_files.php';
if (PHP_VERSION_ID >= 50600) {
$includeFiles = Composer\Autoload\ComposerStaticInitFilesAutoload::$files;
} else {
$includeFiles = require __DIR__ . '/autoload_files.php';
}
foreach ($includeFiles as $fileIdentifier => $file) {
composerRequireFilesAutoload($fileIdentifier, $file);
}