0

我的 Zend 网站出现异常的自动加载问题。到目前为止,自动加载一直是一种享受。不过现在,我在项目中添加了一个新文件,但自动加载却找不到它。我已将问题简化为最小的测试用例,并想知道是否有人可以帮助我。

在我的网站中,我有一个通常的目录结构,如下所示:

site/
  application/...
  library/
    Zend/...
    PHPUnit/...
    Ext/
      Extras/
        Test.php
      Service/
        Test.php

我已经正确设置了自动加载(根据 StackOverflow 上的其他有用评论)并注册了 Ext_ 命名空间,这可以通过正确实例化 Ext_Extras_Test 来证明。

当我尝试实例化 Ext_Service_Test 时,问题就来了。自动加载“无法打开流”。我检查了正确的拼写,使用find,ls和文件资源管理器列出了目录内容,以确保文件存在于正确的位置。

我就是无法让它 &^%%£* 找到文件!有没有人有任何线索?

4

1 回答 1

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 实例,允许您自动加载模块资源。

于 2012-05-24T08:58:13.693 回答