我正在将一些项目代码迁移到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