Composer загружает один класс с пространством имен

Я пытаюсь использовать Symfony Flex с пакетом.

У меня есть эта структура каталогов

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

Я хочу загрузить класс Kernel.php с этим пространством имен App и классы внутри AppBundle с пространством имен AppBundle,

Я перепробовал множество конфигураций композитора, но не смог их загрузить.

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

Но я получил такие ошибки:

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

ОБНОВИТЬ

Класс src / Kernel.php имеет другое пространство имен, и я не мог изменить его, потому что другие классы использовали его, пространство имен App, Некоторые сценарии вызывают этот класс, используя use App\Kernel

src/AppBundle/AppBundle.php класс имеет это пространство имен AppBundle

Есть способ сделать это?

ОБНОВЛЕНИЕ 2

Я разобрался в этом:

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

2

Решение

Я бы предложил вместо этого использовать карту классов для Kernel.php:

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

Увидеть https://getcomposer.org/doc/04-schema.md#classmap

1

Другие решения

Вам нужно только

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

По вопросам рекламы [email protected]