Ответ 1
Каталог src
будет в корне вашего проекта.
Он находится на том же уровне, что и каталог vendor
.
Если вы определяете
"autoload": {
"psr-4": {
"DG\\Munchkin\\": "src/DG/Munch/"
}
}
это не будет загружать классы из /var/www/html/xxx/vendor/yyy/src/DG/Munch
,
как вы заявили.
Поскольку ваша структура проекта:
/var/www/html/
+- /xxx (project)
- composer.json
+- /src
+- DG
+- Munch
+- /vendor
- autoload.php
+- vendor-projectA
+- vendor-projectB
+- yyy
Пространство имен \DG\Munchkin
будет отображаться в классах внутри
/var/www/html/xxx/src/DG/Munch
и не внутри
/var/www/html/xxx/vendor/yyy/src/DG/Munch
.
Но как я могу загружать классы из /var/www/html/xxx/?
Определите пути в файле composer.json(внутри/var/www/html/xxx/) вашего проекта:
"autoload": {
"psr-4": {
"ProjectRoot\\" : "",
"NamspaceInSourceDir\\" : "src/"
}
}
или загрузите автозагрузчик композитора в index.php или во время загрузки и добавьте пути вручную:
$loader = require 'vendor/autoload.php';
$loader->add('Namespace\\Somewhere\\Else\\', __DIR__);
$loader->add('Namespace\\Somewhere\\Else2\\', '/var/www/html/xxx');