У меня проблема с автозагрузкой компаса.
Если выполнить команду «composer dump-autoload», то появляется ошибка Класс не найден так как autoload_static.php изменилось.
У меня есть следующая структура проекта:
приложение
— общественности
—— index.php
— ЦСИ
—— WordToImage.php
— продавец
—— композитор
———— (любые файлы композитора)
———— autoload_static.php
— composer.json
index.php
require_once __DIR__ . '/../vendor/autoload.php';
use wti\src\WordToImage;
$loader = new WordToImage();
$loader->saveImages();
composer.json
{
"autoload": {
"psr-4": {
"wti\\" : "src/"}
}
}
autoload_static.php
<?php
// autoload_static.php @generated by Composer
namespace Composer\Autoload;
class ComposerStaticInit416f5acb57c46a86bf05d897e056b40d
{
public static $prefixLengthsPsr4 = array (
'w' =>
array (
'wti\\' => 4,
),
);
public static $prefixDirsPsr4 = array (
'wti\\' =>
array (
0 => __DIR__ . '/../..' . '/src/WordToImage.php',
),
);
public static $classMap = array (
'wti\\src\\WordToImage' => __DIR__ . '/../..' . '/src/WordToImage.php',
);
public static function getInitializer(ClassLoader $loader)
{
return \Closure::bind(function () use ($loader) {
$loader->prefixLengthsPsr4 = ComposerStaticInit416f5acb57c46a86bf05d897e056b40d::$prefixLengthsPsr4;
$loader->prefixDirsPsr4 = ComposerStaticInit416f5acb57c46a86bf05d897e056b40d::$prefixDirsPsr4;
$loader->classMap = ComposerStaticInit416f5acb57c46a86bf05d897e056b40d::$classMap;
}, null, ClassLoader::class);
}
}
Когда я выполняю команду «composer dump-autoload», тогда autoload_static.php изменено
<?php
// autoload_static.php @generated by Composer
namespace Composer\Autoload;
class ComposerStaticInit416f5acb57c46a86bf05d897e056b40d
{
public static $prefixLengthsPsr4 = array (
'w' =>
array (
'wti\\' => 4,
),
);
public static $prefixDirsPsr4 = array (
'wti\\' =>
array (
0 => __DIR__ . '/../..' . '/src',
),
);
public static function getInitializer(ClassLoader $loader)
{
return \Closure::bind(function () use ($loader) {
$loader->prefixLengthsPsr4 = ComposerStaticInit416f5acb57c46a86bf05d897e056b40d::$prefixLengthsPsr4;
$loader->prefixDirsPsr4 = ComposerStaticInit416f5acb57c46a86bf05d897e056b40d::$prefixDirsPsr4;
}, null, ClassLoader::class);
}
}
И когда я запускаю проект, появляется ошибка (класс не найден). Пожалуйста, скажите мне, почему это строки:
0 => __DIR__ . '/../..' . '/src/WordToImage.php'
'wti\\src\\WordToImage' => __DIR__ . '/../..' . '/src/WordToImage.php',
удаляются
Две вещи:
1. Определение автозагрузчика psr-4 принимает массив каталогов в качестве значения для пространства имен:
{
"autoload": {
"psr-4": {
"wti\\": ["src/"]
}
}
}
use wti\WordToImage;
Других решений пока нет …