作曲家使用命名空间加载单个类



我正在尝试将symfony flex与捆绑包一起使用。

我有这个目录结构

/
src/
AppBundle/
AppBundle.php
# Many classes
Kernel.php

我想用这个命名空间App加载内核.php类,用命名空间AppBundle加载 AppBundle 中的类。

我尝试了许多作曲家配置,但无法加载它们。

"psr-4": {
"AppBundle\": "src/AppBundle/",
"App\": "src/"
}

但是我得到了这样的错误:

Expected to find class "AppAppBundleAppBundle" in file "/var/www/vhosts/flex/src/AppBundle/AppBundle.php"

更新

src/Kernel.php类有不同的命名空间,我无法更改它,因为其他类使用它,命名空间App。某些脚本使用use AppKernel调用该类

src/AppBundle/AppBundle.php类具有此命名空间AppBundle

有办法做到这一点吗?

更新 2

我整理了一下:

"autoload": {
"psr-4": {
"AppBundle\": "src/AppBundle/"
},
"classmap": [
{ "App\Kernel": "src/Kernel.php" }
]
},

我建议使用内核的类映射.php改为:

"autoload": {
"psr-4": { "AppBundle\": "src/AppBundle" },
"classmap": [ "src/Kernel.php" ]
}

请参阅 https://getcomposer.org/doc/04-schema.md#classmap

你只需要

"psr-4": { "App\": "src/" }

最新更新