Класс уже используется исключение

#php #symfony #symfony4

#php #symfony #symfony4

Вопрос:

Я пытаюсь использовать SonataAdminBundle и SonataUserBundle в моем проекте symfony4. Когда я пытаюсь расширить SonataUserBundle, я получил сообщение об ошибке, в котором говорится, что мой новый класс уже используется:

 Fatal error: Cannot declare class ApplicationSonataUserBundleApplicationSonat
aUserBundle, because the name is already in use in C:wamp64wwwstaff-testsrc
ApplicationSonataUserBundleApplicationSonataUserBundle.php on line 24
  

Я включаю пакет на bundles.php файл
В файле composer.json я добавил свой новый атрибут bundle для атрибута psr4.
Я сопоставил свой новый пакет с doctrine
Мой класс ApplicationSonataUserBundle используется только в моем пакете. Я расширил его :

 php bin/console sonata:easy-extends:generate SonataUserBundle --dest=src --namespace_prefix=App
  

Мой Bundles.php файл :

 return [
    ApplicationSonataUserBundleApplicationSonataUserBundle::class => ['all' => true],
];
  

Composer.json:

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

doctrine.yaml

 orm:
        auto_generate_proxy_classes: true
        entity_managers:
            default:
                naming_strategy: doctrine.orm.naming_strategy.underscore
                auto_mapping: true
                mappings:
                    SonataUserBundle: ~
                    FOSUserBundle: ~
                    ApplicationSonataUserBundle: ~
  

ApplicationSonataUserBundle класс:

 <?php

namespace ApplicationSonataUserBundle;

use SymfonyComponentHttpKernelBundleBundle;

/**
 * This file has been generated by the SonataEasyExtendsBundle.
 *
 * @link https://sonata-project.org/easy-extends
 *
 * References:
 * @link http://symfony.com/doc/current/book/bundles.html
 */
class ApplicationSonataUserBundle extends Bundle
{
    /**
     * {@inheritdoc}
     */
    public function getParent()
    {
        return 'SonataUserBundle';
    }
}
  
 "require": {
        "php": "^7.1.3",
        "ext-ctype": "*",
        "ext-iconv": "*",
        "friendsofsymfony/rest-bundle": "^2.5",
        "nelmio/api-doc-bundle": "^3.4",
        "sensio/framework-extra-bundle": "^5.1",
        "sonata-project/admin-bundle": "^3.48",
        "sonata-project/doctrine-orm-admin-bundle": "^3.8",
        "sonata-project/user-bundle": "^4.3",
        "symfony/acl-bundle": "^1.0",
        "symfony/asset": "4.2.*",
        "symfony/console": "4.2.*",
        "symfony/dotenv": "4.2.*",
        "symfony/expression-language": "4.2.*",
        "symfony/flex": "^1.1",
        "symfony/form": "4.2.*",
        "symfony/framework-bundle": "4.2.*",
        "symfony/monolog-bundle": "^3.1",
        "symfony/orm-pack": "*",
        "symfony/process": "4.2.*",
        "symfony/security-bundle": "4.2.*",
        "symfony/serializer-pack": "*",
        "symfony/swiftmailer-bundle": "^3.1",
        "symfony/translation": "4.2.*",
        "symfony/twig-bundle": "4.2.*",
        "symfony/validator": "4.2.*",
        "symfony/web-link": "4.2.*",
        "symfony/yaml": "4.2.*"
    },
  

Мне нужно просто расширить SonataUserBundle, но каждый раз, когда я пытаюсь это сделать, у меня та же проблема. Я использую Symfony4 в своем проекте. Исключение появляется после расширения пакета.

Есть идеи по поводу этой проблемы? Я опубликовал проблему раньше, но ответа нет.

Ответ №1:

Для решения проблемы. Я только что добавил приложение в свое пространство имен :

 namespace AppApplicationSonataUserBundle;

use SymfonyComponentHttpKernelBundleBundle;

/**
 * This file has been generated by the SonataEasyExtendsBundle.
 *
 * @link https://sonata-project.org/easy-extends
 *
 * References:
 * @link http://symfony.com/doc/current/book/bundles.html
 */
class ApplicationSonataUserBundle extends Bundle
{
    /**
     * {@inheritdoc}
     */
    public function getParent()
    {
        return 'SonataUserBundle';
    }
}
  

И в bundles.php слишком :

 return [
    AppApplicationSonataUserBundleApplicationSonataUserBundle::class => ['all' => true],
];