0

MyBundle下 に新しいバンドルがありますsrc/MyVendor/Bundle/MyBundle/

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 dir 構造)、または作曲家の自動ロードなどを介してのみこれを行う必要があります

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

composer dump-autoload --optimize

いずれにせよ、助けていただければ幸いです。

ありがとうございました

4

1 に答える 1

0

OK、私はそれを理解したと思います:

  1. registerNamespace\\名前空間に末尾を付けないでください
  2. 追加する必要があります$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

于 2014-04-30T21:36:52.397 に答える