我的Zend网站遇到了一个不寻常的自动加载问题。到目前为止,自动加载一直是一种享受。现在,我添加了一个新文件,项目和自动加载只是找不到它。我已经将问题减少到最小的测试用例,并且想知道是否有人可以帮助我。
在我的网站中,我有一个通常的目录结构,如下所示:
site/
application/...
library/
Zend/...
PHPUnit/...
Ext/
Extras/
Test.php
Service/
Test.php
我已经正确设置了自动加载(根据StackOverflow上的其他有用注释)并注册了Ext_名称空间,这可以通过正确实例化Ext_Extras_Test来证明。
当我尝试实例化Ext_Service_Test时出现问题。自动加载“无法打开流”。我检查了正确的拼写,使用find
,ls
和文件资源管理器列出了目录内容,以确保文件存在于正确的位置。
我只是无法得到它& ^ %%£*找到该文件!有人有任何线索吗?
答案 0 :(得分:1)
发现它正在尝试覆盖资源自动加载器,即使它未指定我很确定这会影响所有名称空间:
42.3.2。模块资源自动加载器Zend框架附带Zend_Loader_Autoloader_Resource的具体实现, 包含涵盖建议的默认值的资源类型映射 Zend Framework MVC应用程序的目录结构。这个装载机, Zend_Application_Module_Autoloader附带以下映射:
forms/ => Form
models/ => Model
DbTable/ => Model_DbTable
mappers/ => Model_Mapper
plugins/ => Plugin
services/ => Service
views/
helpers => View_Helper
filters => View_Filter
例如,如果您的模块的前缀为“Blog_”,那么 试图实例化“Blog_Form_Entry”类,它会查看 资源目录的“forms /”子目录,用于命名的文件 “Entry.php”。
将模块引导与Zend_Application一起使用时,是一个实例 默认情况下将为每个创建Zend_Application_Module_Autoloader 离散模块,允许您自动加载模块资源。