该目录将位于项目根目录中。它与目录处于同一级别。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/"
}
}
或者在索引中加载作曲家自动加载程序.php或在引导期间,然后手动添加路径:
$loader = require 'vendor/autoload.php';
$loader->add('Namespace\\Somewhere\\Else\\', __DIR__);
$loader->add('Namespace\\Somewhere\\Else2\\', '/var/www/html/xxx');
引用:https://getcomposer.org/doc/04-schema.md#autoload