Symfony 3.4: Did you forget a "use" statement for another namespace?

13,031

Ok I see now, you should change this in your composer.json, from :

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

to

"autoload": {
    "psr-4": {
        "": "src/"
    },
   "classmap": [ "app/AppKernel.php", "app/AppCache.php" ]
},

Like this you add to the composer autoloader (vendor/autoload.php) all php class inside src/ of your project

After this you need to recreate your autoload file:

composer dump-autoload
Share:
13,031

Related videos on Youtube

fudu
Author by

fudu

Updated on June 04, 2022

Comments

  • fudu
    fudu almost 2 years

    I'm new to Symfony. I'm following a course, and after creating a new Symfony project, they use this console to create new bundle php bin/console generate:bundle

    But when I do this in the console, and then use php bin/console server:run, it throws an error:

    PHP Fatal error: Uncaught Symfony\Component\Debug\Exception\ClassNotFoundException: Attempted to load class "HomeBundle" from namespace "HomeBundle".

    Did you forget a "use" statement for another namespace?
    in C:\xampp\htdocs\symfony_CRUD\app\AppKernel.php:19

    After a lot of time searching for solution, almost i just found "change composer.json" solution, but it already fixed composer.json at Symfony 3.4 , so i don't know what to do next.

    Here is my composer.json at the beginning

    {
        "name": "symfony/framework-standard-edition",
        "license": "MIT",
        "type": "project",
        "description": "The \"Symfony Standard Edition\" distribution",
        "autoload": {
            "psr-4": {
                "AppBundle\\": "src/AppBundle"
            },
            "classmap": [ "app/AppKernel.php", "app/AppCache.php" ]
        },
        "autoload-dev": {
            "psr-4": { "Tests\\": "tests/" },
            "files": [ "vendor/symfony/symfony/src/Symfony/Component/VarDumper/Resources/functions/dump.php" ]
        },
        "require": {
            "php": ">=5.5.9",
            "doctrine/doctrine-bundle": "^1.6",
            "doctrine/orm": "^2.5",
            "incenteev/composer-parameter-handler": "^2.0",
            "sensio/distribution-bundle": "^5.0.19",
            "sensio/framework-extra-bundle": "^5.0.0",
            "symfony/monolog-bundle": "^3.1.0",
            "symfony/polyfill-apcu": "^1.0",
            "symfony/swiftmailer-bundle": "^2.6.4",
            "symfony/symfony": "3.4.*",
            "twig/twig": "^1.0||^2.0"
        },
        "require-dev": {
            "sensio/generator-bundle": "^3.0",
            "symfony/phpunit-bridge": "^3.0"
        },
        "scripts": {
            "symfony-scripts": [
                "Incenteev\\ParameterHandler\\ScriptHandler::buildParameters",
                "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
                "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
                "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",
                "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile",
                "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::prepareDeploymentTarget"
            ],
            "post-install-cmd": [
                "@symfony-scripts"
            ],
            "post-update-cmd": [
                "@symfony-scripts"
            ]
        },
        "config": {
            "platform": {
                "php": "5.5.9"
            },
            "sort-packages": true
        },
        "extra": {
            "symfony-app-dir": "app",
            "symfony-bin-dir": "bin",
            "symfony-var-dir": "var",
            "symfony-web-dir": "web",
            "symfony-tests-dir": "tests",
            "symfony-assets-install": "relative",
            "incenteev-parameters": {
                "file": "app/config/parameters.yml"
            },
            "branch-alias": {
                "dev-master": "3.4-dev"
            }
        }
    }
    

    AppKernel.php

    <?php
    
    use Symfony\Component\DependencyInjection\ContainerBuilder;
    use Symfony\Component\HttpKernel\Kernel;
    use Symfony\Component\Config\Loader\LoaderInterface;
    
    class AppKernel extends Kernel
    {
        public function registerBundles()
        {
            $bundles = [
                new Symfony\Bundle\FrameworkBundle\FrameworkBundle(),
                new Symfony\Bundle\SecurityBundle\SecurityBundle(),
                new Symfony\Bundle\TwigBundle\TwigBundle(),
                new Symfony\Bundle\MonologBundle\MonologBundle(),
                new Symfony\Bundle\SwiftmailerBundle\SwiftmailerBundle(),
                new Doctrine\Bundle\DoctrineBundle\DoctrineBundle(),
                new Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle(),
                new HomeBundle\HomeBundle(),
            ];
    
            if (in_array($this->getEnvironment(), ['dev', 'test'], true)) {
                $bundles[] = new Symfony\Bundle\DebugBundle\DebugBundle();
                $bundles[] = new Symfony\Bundle\WebProfilerBundle\WebProfilerBundle();
                $bundles[] = new Sensio\Bundle\DistributionBundle\SensioDistributionBundle();
    
                if ('dev' === $this->getEnvironment()) {
                    $bundles[] = new Sensio\Bundle\GeneratorBundle\SensioGeneratorBundle();
                    $bundles[] = new Symfony\Bundle\WebServerBundle\WebServerBundle();
                }
            }
    
            return $bundles;
        }
    
        public function getRootDir()
        {
            return __DIR__;
        }
    
        public function getCacheDir()
        {
            return dirname(__DIR__).'/var/cache/'.$this->getEnvironment();
        }
    
        public function getLogDir()
        {
            return dirname(__DIR__).'/var/logs';
        }
    
        public function registerContainerConfiguration(LoaderInterface $loader)
        {
            $loader->load(function (ContainerBuilder $container) {
                $container->setParameter('container.autowiring.strict_mode', true);
                $container->setParameter('container.dumper.inline_class_loader', true);
    
                $container->addObjectResource($this);
            });
            $loader->load($this->getRootDir().'/config/config_'.$this->getEnvironment().'.yml');
        }
    }
    

    My code tree:

    enter image description here

    Please help, thanks :)

    • David Courtey
      David Courtey over 5 years
      Look like you have an unknown class in your AppKernel.php line 19. Can you show your AppKernel ? Do you have a bundle called HomeBundle ? maybe you remove it ? Your composer.json look ok
    • fudu
      fudu over 5 years
      yes i will, please stand by, thanks for reading :)
    • fudu
      fudu over 5 years
      i've edited the post, please check :) by the way, this is totally a new symphony project, so i don't think AppKernel have any problems :)
    • David Oliver
      David Oliver over 5 years
      Please note for future questions that the framework you are using is called Symfony, and not Symphony (which is an unrelated CMS). Thanks :) I've edited the question and tag.
    • fudu
      fudu over 5 years
      Yes, thanks for telling me that :) I'll remember for the next time
  • fudu
    fudu over 5 years
    After i changed this, do i have to do something else, like composer install or something? thanks for helping me :)
  • David Courtey
    David Courtey over 5 years
    I edited my post, you need to regenerate the vendor/autoload.php by composer install or dump-autload :)
  • fudu
    fudu over 5 years
    ah i found the way to do this, run composer dump-autoload
  • Mutatos
    Mutatos over 4 years
    if you run composer update it will generate all assets again and it will run