我正在將一些項目代碼遷移到ZF-Boilerplate,並遇到一些奇怪的自動加載器行爲。Zend框架自動加載器奇怪的行爲
我有這些線路中的的application.ini
autoloadernamespaces[] = "App_"
autoloadernamespaces[] = "Boilerplate_"
;autoloaderNamespaces[] = "DCH_"
autoloadernamespaces[] = "Elastica_"
autoloadernamespaces[] = "EasyBib_"
注意到; autoloaderNamespaces [] = 「DCH_」 的註釋。
後來,在我的引導,我有以下行作爲一個測試:
$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_
隨着線未註釋命名空間中包含(也如果我移動大昌行線到列表的末尾):Zend_,ZendX和DCH_
如果我的DCH_線移動到列表的開始命名空間包含:Zend公司,ZendX_,APP_,Boilerplate_,Elastica_和EasyBib_
我加入以下的引導,使其工作,但它是一個黑客,我不喜歡它:
$autoloader = \Zend_Loader_Autoloader::getInstance();
$autoloader->registerNamespace('DCH_');
任何想法?
只是採取一個瘋狂的猜測,但你有沒有嘗試重新排列你的應用程序/ ini中的行,以便DHC_是最後? – ChrisR 2012-03-11 18:33:45
感謝您的評論。我已經更新了我的原始帖子,並提供了更多關於此的詳細信 – dimbo 2012-03-11 19:18:18