Я создал простой пользовательский пакет Symfony (в версии 5.0). Это после того, как я запустил composer require
, расположенный в vendor/ntrx/ntrx-user-bundle
, но я не могу загрузить его нормально. Структура папок там выглядит следующим образом:
Controller/
Service/
composer.json
NtrxUserBundle.php
Readme.md
composer.json
содержит следующее:
{
"name": "ntrx/ntrx-user-bundle",
"description": "",
"license": "proprietary",
"type": "symfony-bundle",
"require": {
"php": "^7.2.5",
[...]
},
"autoload": {
"psr-4": { "Ntrx\\UserBundle\\": "" }
}
}
И NtrxUserBundle.php
содержит следующий код:
<?php
namespace Ntrx\UserBundle;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\HttpKernel\Bundle\Bundle;
class NtrxUserBundle extends Bundle
{
/**
* {@inheritdoc}
*/
public function build(ContainerBuilder $container): void {
parent::build($container);
}
}
Когда я запускаю, например, php bin/console
, я получаю следующую ошибку:
Symfony\Component\ErrorHandler\Error\ClassNotFoundError^ {#31
#message: """
Attempted to load class "NtrxUserBundle" from namespace "Ntrx\UserBundle".\n
Did you forget a "use" statement for another namespace?
"""
#code: 0
#file: "./src/Kernel.php"
#line: 23
trace: {
./src/Kernel.php:23 {
App\Kernel->registerBundles(): iterable^
› if ($envs[$this->environment] ?? $envs['all'] ?? false) {
› yield new $class();
› }
}
./vendor/symfony/http-kernel/Kernel.php:369 { …}
./vendor/symfony/http-kernel/Kernel.php:123 { …}
./vendor/symfony/framework-bundle/Console/Application.php:169 { …}
./vendor/symfony/framework-bundle/Console/Application.php:75 { …}
./vendor/symfony/console/Application.php:140 { …}
./bin/console:42 { …}
}
}
Я пытался изменить имена пакета или изменить автозагрузчик, но кажется, что класс не там вообще. Я также попытался сломать другой сторонний пакет (сделайте опечатку в имени класса), и я получаю соответствующую ошибку там, но не ошибку выше (The file was found but the class was not in it, the class name or namespace probably has a typo.
). Кроме того, composer dump-autoload
ничего не меняет.
Единственная похожая ошибка, которую я обнаружил в Интернете: Symfony включить пользовательский пакет ClassNotFoundException , и я думаю, что в моем коде все исправлено. Есть предложения?