【问题标题】:Moved Zend Framework project to Ubuntu and it stopped working将 Zend Framework 项目移至 Ubuntu 并停止工作
【发布时间】:2011-01-17 17:58:21
【问题描述】:

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

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

Form_Foo 位于forms/Foo.php

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

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

但是在我的库文件夹中,我有一个 Core 文件夹,其中有我的 Core 类,并且我使用 Zend Framework 命名它们的方式

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

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

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

Application
  Modules
    Default
      Controllers
      Views
      ...

欢迎任何想法和提示。

【问题讨论】:

    标签: zend-framework ubuntu zend-framework-modules


    【解决方案1】:

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

    【讨论】:

    • 是的.. 造成这一切的是 Windows 小写/大写无知的愚蠢 :)
    猜你喜欢
    • 2022-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-09
    • 1970-01-01
    相关资源
    最近更新 更多