背景:thinkphp5下用composer下载phpword报错,于是升级到了composer2安装phpword没问问题。但是在运行thinkphp5项目的时候,有如下报错:
Fatal error: Cannot declare class Composer\Autoload\ComposerStaticInit7ec9931e7e5ae7803c6eb8f933f2b236, because the name is already in use in D:\xxx\tp5\vendor\composer\autoload_static.php on line 7
这个应该是重复加载的报错问题,
搜索了ComposerStaticInit7ec9931e7e5ae7803c6eb8f933f2b236这个class被调用的地方,找到了调用文件composer\autoload_real.php,然后综合以前composer1生成的authload_real.php和目前composer2生成的autoload_real.php文件得到如下的代码,运行thinkphp项目就不报错了
<?php
// autoload_real.php @generated by Composer
class ComposerAutoloaderInit7ec9931e7e5ae7803c6eb8f933f2b236
{
private static $loader;
public static function loadClassLoader($class)
{
if ('Composer\Autoload\ClassLoader' === $class) {
require __DIR__ . '/ClassLoader.php';
}
}
/**
* @return \Composer\Autoload\ClassLoader
*/
public static function getLoader()
{
if (null !== self::$loader) {
return self::$loader;
}
require __DIR__ . '/platform_check.php';
spl_autoload_register(array('ComposerAutoloaderInit7ec9931e7e5ae7803c6eb8f933f2b236', 'loadClassLoader'), true, true);
self::$loader = $loader = new \Composer\Autoload\ClassLoader();
spl_autoload_unregister(array('ComposerAutoloaderInit7ec9931e7e5ae7803c6eb8f933f2b236', 'loadClassLoader'));
$useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
if ($useStaticLoader) {
require_once __DIR__ . '/autoload_static.php';
call_user_func(\Composer\Autoload\ComposerStaticInit7ec9931e7e5ae7803c6eb8f933f2b236::getInitializer($loader));
} else {
$map = require __DIR__ . '/autoload_namespaces.php';
foreach ($map as $namespace => $path) {
$loader->set($namespace, $path);
}
$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);
if ($useStaticLoader) {
$includeFiles = Composer\Autoload\ComposerStaticInit7ec9931e7e5ae7803c6eb8f933f2b236::$files;
} else {
$includeFiles = require __DIR__ . '/autoload_files.php';
}
foreach ($includeFiles as $fileIdentifier => $file) {
composerRequire7ec9931e7e5ae7803c6eb8f933f2b236($fileIdentifier, $file);
}
return $loader;
}
}
function composerRequire7ec9931e7e5ae7803c6eb8f933f2b236($fileIdentifier, $file)
{
if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
require $file;
$GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
}
}