2012-01-13 4 views
0

パスがフォルダ構造と一致しない場合、Symfony2クラスローダは動作しませんか? --- init.php</p> <p>| | ---/plugin1/libに/</p> <p>| ---/plugin2で/ libに/ここで

プラグイン/

私の現在の構造であり、

| ---/symfonyの/

私はこのように私のコードを持っている:

set_include_path(DIR_FS_CATALOG.'plugins'); 

require_once(DIR_FS_CATALOG.'plugins/Symfony/Component/ClassLoader/UniversalClassLoader.php'); 

// load the class loader and dependency injection component 
$loader = new Symfony\Component\ClassLoader\UniversalClassLoader(); 

$loader->registerNamespaces(array('plugins\\plugin1' => __DIR__.'/plugins/plugin1/lib', 'plugins' => DIR_FS_CATALOG.'plugins')); 
$loader->registerNamespace('Symfony',__DIR__.'/plugins'); 

$loader->register(); 


use plugins\plugin1\MyClass; 

MyClass::init(); 

致命的なエラー:クラスのプラグイン\ plugin1 \ MyClassの「私は私が間違って何をしただろう

を見つけていませんか?どんな助けでも大歓迎です。

答えて

1

Symfony2クラスローダーは、PSR-0に準拠しています(https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-0.md)。これは、名前空間がファイルシステム構造を反映している必要があることを意味します。あなたがリンクに行くと教義との例を見れば、ここで[編集] couldntの郵便番号、しかし:http://symfony.com/doc/2.0/components/class_loader.html で

+0

があり、この例であります名前空間あなたが私が意味するものを見るでしょう それはあなたがファイル構造と異なる名前空間を持つことができるのだろうか? – mr1031011

+0

最後のコードブロックについて話しているとすれば、クラスローダーにクラスファイルの検索場所を指示するため、これは機能します。したがって、 'MyClass'が'/plugin1/lib'ディレクトリにある場合、この名前空間を明示的に登録する必要があります。しかし、 '/ plugin1'と'/plugin1/lib'のクラスを同じ名前空間に登録することはできません。 – prehfeldt

関連する問題

 関連する問題