0

我有一个 Zend Framework 项目,我在 Windows 中开始工作一段时间。它在 Zend Server CE 上运行,一切正常。在 Windows 机器之间移动它完全没有问题。但是现在我想把它放在一个 Ubuntu 服务器上,仍然使用 Zend Server CE。但它开始抱怨缺少控制器插件。但它们位于“正确”的位置。我猜自动装载机不知何故变得混乱。

感觉应该是因为 Windows 在文件夹和文件上使用不区分大小写的名称是原因。Zend Framework 在正确的情况下需要哪些文件夹?查看标准项目布局的小写文件夹名称。但是查看 Zend 框架本身使用了大写的首字母。也许再加上 Zend Framework 自动加载器在复数形式的文件夹名称上接受单数类名,例如

Form_Foo位于forms/Foo.php

在我的项目中,项目的主要部分使用标准的小写样式。

IE

application
  modules
    default
      controllers
      views
      models
      forms
      plugins
        controller
          acl
            Plugin.php  -- The class Plugin_Controller_Acl_Plugin in this file is not found on Linux
    foo
      controlles
      views
      models
      forms

但是然后在我的库文件夹中,我有一个核心文件夹,其中有我的核心类,并且在那些我使用 Zend 框架命名它们的方式

library
  Core
    Model
      User.php -- Contains the class Core_Model_User

快速测试似乎表明 Zend Framework 能够很好地定位这些类。

在 Linux 中的 Zend Framework 中,您必须在哪里使用正确的案例名称才能使自动加载工作?是否应该在整个过程中选择第一个大写名称

Application
  Modules
    Default
      Controllers
      Views
      ...

欢迎任何想法和提示。

4

1 回答 1

2

“Plugin_Controller_Acl_Plugin”是唯一无法加载的类吗?如果是这样,您应该尝试对插件内的每个目录(如 plugins/Controller/Acl)使用大写,因为自动加载器仅将命名空间的“Plugin_”部分与“plugins”目录相关联,其他的将被加载,就像其他类(大写的目录名称保留,只有下划线将被转换为目录分隔符)。查看 Zend_Application_Module_Autoloader 的默认设置,您应该在列出的目录下使用大写的目录名(表单、插件等)。

于 2011-01-17T21:08:24.147 回答