无法通过Composer加载类

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法通过Composer加载类相关的知识,希望对你有一定的参考价值。

我尝试通过以下方式更新doctrine架构:

$ php bin/console doctrine:schema:update --force

而且我一直在:

PHP Fatal error:  Uncaught 
SymfonyComponentDebugExceptionClassNotFoundException: Attempted to 
load class "FOSUserBundle" from namespace "AppFOSUserBundle".

Kernel.php:

 <?php

 namespace App;

use SymfonyBundleFrameworkBundleKernelMicroKernelTrait;
use SymfonyComponentConfigLoaderLoaderInterface;
use SymfonyComponentDependencyInjectionContainerBuilder;
use SymfonyComponentHttpKernelKernel as BaseKernel;
use SymfonyComponentRoutingRouteCollectionBuilder;

class Kernel extends BaseKernel
{
use MicroKernelTrait;

const CONFIG_EXTS = '.{php,xml,yaml,yml}';

public function getCacheDir()
{
    return $this->getProjectDir().'/var/cache/'.$this->environment;
}

public function getLogDir()
{
    return $this->getProjectDir().'/var/log';
}

public function registerBundles()
{
    $bundles = array(
        new FOSUserBundleFOSUserBundle(),
    );
    $contents = require $this->getProjectDir().'/config/bundles.php';
    foreach ($contents as $class => $envs) {
        if (isset($envs['all']) || isset($envs[$this->environment])) {
            yield new $class();
        }
    }
}

composer.json文件:

"autoload": {
    "psr-4": {
        "App\": "src/",
        "FOS\": "vendor/"
    }
},
"autoload-dev": {
    "psr-4": {
        "Tests\": "test/"
    }

FOSUserBundle.php命名空间是:

namespace FOSUserBundle;

并没有工作,但namaspace App工作正常。我试过了:

$ composer dump-autoload

我究竟做错了什么?它仍然在FOS之前使用App命名空间。

答案

您需要添加斜杠。

$bundles = array(
    new FOSUserBundleFOSUserBundle(),
);

以上是关于无法通过Composer加载类的主要内容,如果未能解决你的问题,请参考以下文章

自定义包的类不会使用composer autoloader自动加载

我应该在哪里编写代码以便 Composer 可以自动加载我的 PHP 类?

使用 Composer 和 autoload.php 在 PHPUnit 中自动加载类

如何通过单击适配器类中代码的项目中的删除按钮来删除列表视图中的项目后重新加载片段?

composer需要并使用非类文件

Composer 自动加载自定义类