Symfony 3.4: Did you forget a "use" statement for another namespace?
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
Related videos on Youtube
fudu
Updated on June 04, 2022Comments
-
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:19After 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:
Please help, thanks :)
-
David Courtey over 5 yearsLook 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 over 5 yearsyes i will, please stand by, thanks for reading :)
-
fudu over 5 yearsi'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 over 5 yearsPlease 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 over 5 yearsYes, thanks for telling me that :) I'll remember for the next time
-
-
fudu over 5 yearsAfter i changed this, do i have to do something else, like
composer install
or something? thanks for helping me :) -
David Courtey over 5 yearsI edited my post, you need to regenerate the
vendor/autoload.php
by composer install or dump-autload :) -
fudu over 5 yearsah i found the way to do this, run
composer dump-autoload
-
Mutatos over 4 yearsif you run composer update it will generate all assets again and it will run