zend-framework - Zend 框架自动加载器奇怪的行为

标签 zend-framework

我正在将一些项目代码迁移到 ZF-Boilerplate,但自动加载器遇到一些奇怪的行为。

我在 application.ini 中有这些行

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

请注意,;autoloaderNamespaces[] = "DCH_"已被注释掉。

后来,在我的 Bootstrap 中,我将以下行作为测试:

$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 并注释掉该行时, protected 变量命名空间包含:Zend、ZendX_、App_、Boilerplate_、Elastica_ 和 EasyBib_

未注释的行命名空间包含(如果我将 DCH 行移至列表末尾):Zend_、ZendX 和 DCH_

如果我将 DCH_ 行移动到列表的开头命名空间包含:Zend、ZendX_、App_、Boilerplate_、Elastica_ 和 EasyBib_

我已将以下内容添加到 Bootstrap 中以使其正常工作,但这是一个黑客行为,我对此不满意:

$autoloader = \Zend_Loader_Autoloader::getInstance();

        $autoloader->registerNamespace('DCH_');

有什么想法吗?

最佳答案

我不知道为什么会这样,但确实如此。我看不出有任何区别。我注释掉了这些行并从其他项目复制了原件,它起作用了??

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

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

关于zend-framework - Zend 框架自动加载器奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9657659/

相关文章:

php 设计问题 - Helper 会在这里提供帮助吗?

zend-framework - 带有关联映射的 Doctrine 2 分页

php - 关于 Zend_Controller_Request_Abstract 的一些不清楚的事情

基于PHP的图像管理

php - 使用 Zend Framework 忽略文件上传的空实例?文件因此无法上传

html - 在页面加载时调用 Twitter Bootstrap Lightbox

php - 如何使用Zend Gdata YouTube获得视频评论的用户个人资料详细信息?

javascript - 日期文本框元素和 ContentPane 一起使用时出现 Dojo 错误

php - 从默认模块中的自定义操作帮助器访问 Zend url 操作帮助器

php - 如何使用 Zend Framework 2 在模型中设置 2 个表名