ClassNotFoundException-如何在symfony(2.4.4)中注册自定义命名空间

ClassNotFoundException-如何在symfony(2.4.4)中注册自定义命名空间,symfony,autoload,psr-0,Symfony,Autoload,Psr 0,我在下面有一个新的bundleMyBundle src/MyVendor/Bundle/MyBundle/ 在默认控制器中,我希望使用classMyClass,它位于名为MyVendor\MyComponent的命名空间中 它位于src/MyVendor/Component/MyComponent/src/MyVendor/MyComponent/MyClass.php下 我已经试过了 use Symfony\Component\ClassLoader\UniversalClassLoader;

我在下面有一个新的bundle
MyBundle
src/MyVendor/Bundle/MyBundle/

在默认控制器中,我希望使用class
MyClass
,它位于名为
MyVendor\MyComponent的命名空间中

它位于
src/MyVendor/Component/MyComponent/src/MyVendor/MyComponent/MyClass.php下

我已经试过了

use Symfony\Component\ClassLoader\UniversalClassLoader;
$myLoader = new UniversalClassLoader();
$myLoader->registerNamespace( 
    'MyVendor\\MyComponent\\', 
    __DIR__.'/../src/MyVendor/Component/MyComponent/src'
);
app/autoload.php
中,但我仍然收到
ClassNotFoundException
错误

要么我错过了一些微妙的东西,要么我的想法完全错了(错误的psr-0目录结构),或者这应该仅仅通过作曲家的自动加载来完成,例如

"autoload": {
    "psr-0": { 
        "MyVendor\\MyComponent\\": 
        "src/MyVendor/Component/MyComponent/src" 
    }
}

不管是哪种情况,我都非常感谢您的帮助


谢谢

好的,我想我已经弄明白了:

  • registerNamespace
    名称空间中不应包含尾随
    \\
  • 我需要添加
    $myLoad->register()
  • 所以整个事情看起来像

    use Symfony\Component\ClassLoader\UniversalClassLoader;
    $myLoader = new UniversalClassLoader();
    $myLoader->registerNamespace( 
        'MyVendor\\MyComponent', 
        __DIR__.'/../src/MyVendor/Component/MyComponent/src'
    );
    $myLoader->register();
    
    我仍然想看看如何使用
    composer
    dump autoload

    use Symfony\Component\ClassLoader\UniversalClassLoader;
    $myLoader = new UniversalClassLoader();
    $myLoader->registerNamespace( 
        'MyVendor\\MyComponent', 
        __DIR__.'/../src/MyVendor/Component/MyComponent/src'
    );
    $myLoader->register();