2012-03-11 11 views
2

私はいくつかのプロジェクトコードをZF-Boilerplateに移行しており、オートローダーでいくつかの奇妙な動作が発生しています。Zend framework autoloader strange behavior

私はのapplication.ini

autoloadernamespaces[] = "App_" 
autoloadernamespaces[] = "Boilerplate_" 
;autoloaderNamespaces[] = "DCH_" 
autoloadernamespaces[] = "Elastica_" 
autoloadernamespaces[] = "EasyBib_" 

ノートにこれらの行を持っている; [] = "DCH_" autoloaderNamespacesがコメントアウトされています。

その後、私のブートストラップで、私はテストとして次の行を持っている:

$test=new Elastica_Facet_Range('testing'); 

正常に動作しますが、私は以前にコメント行のコメントを外した場合、私はこのエラーを取得する:

Fatal error: Class 'Elastica_Facet_Range' not found in /vagrant/www/myswap/application/Bootstrap.php on line 43 

それは私の名前空間を稼働させることができないという意味で私を怒らせています。

私がコメントアウト行でZend_Loader_Autoloaderをステップ実行すると、保護された変数名前空間が含まれています。私が移動した場合の行コメントを外し名前空間でのZend、ZendX_、APP_、Boilerplate_、Elastica_とEasyBib_

も(含まれていリストの最後にDCHライン):私はリスト名前空間の開始にDCH_ラインを移動する場合Zend_、ZendXとDCH_

は含まれています:Zendの、ZendX_、APP_、Boilerplate_、Elastica_とEasyBib_を

私はそれを動作させるために、ブートストラップに以下を追加したが、それはハックであり、私はそれに満足していないよ:

$autoloader = \Zend_Loader_Autoloader::getInstance(); 

     $autoloader->registerNamespace('DCH_'); 

任意のアイデア?

+0

ただ野生の推測をしていますが、アプリケーション/ iniの行を並べ替えてみましたので、DHC_が最後になるようにしましたか? – ChrisR

+0

コメントありがとうございます。私はオリジナルの投稿を更新しました。 – dimbo

答えて

2

これがなぜ機能するのかわかりませんが、それはありません。私は何の違いも見られません。私はそれらの行をコメントし、他のプロジェクトのオリジナルをコピーし、それは動作しますか?

;autoloadernamespaces[] = "App_" 
;autoloadernamespaces[] = "Boilerplate_" 
;autoloaderNamespaces[] = "DCH_" 
;autoloadernamespaces[] = "Elastica_" 
;autoloadernamespaces[] = "EasyBib_" 

    autoloaderNamespaces[] = "App_" 
    autoloaderNamespaces[] = "DCH_" 
    autoloaderNamespaces[] = "Boilerplate_" 
    autoloaderNamespaces[] = "Elastica_" 
    autoloaderNamespaces[] = "EasyBib_" 
+3

"autoloadernamespace"の大文字の "N"と何か関係があるかもしれません...おそらく、Zend_Configはそれを突き止めますか? – ChrisR

+2

@ChrisRそうかもしれない。私は、すべてのラクダのケースまたはすべての小文字で動作するコードを見ても、それを混ぜるのは問題を求めることだと思います。この例では、Zendの標準はラクダのケースです。 – RockyFord

+1

私はそれについて考えて、あなたが正しいと確信しています...謎解きました! – dimbo