我有一个Zend Framework项目,我开始在Windows工作了一段时间。它在Zend Server CE上运行,一切正常。在Windows机器之间移动它完全没问题。但是现在我想把它放在Ubuntu服务器上,仍然使用Zend Server CE。但它开始抱怨缺少控制器插件。但他们位于“正确”的位置。我想自动加载器会以某种方式混淆。
感觉应该是Windows应该在文件夹和文件上使用不区分大小写的名称。在正确的情况下,Zend Framework需要哪些文件夹? 查看标准项目布局的文件夹的小写名称。但是看看Zend Framework本身的资本首字母被使用了。可能还有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文件夹,我有我的核心类,在那些我使用Zend Framework命名它们的方式
library
Core
Model
User.php -- Contains the class Core_Model_User
快速测试似乎表明Zend Framework能够很好地找到这些类。
在Linux中的Zend Framework中,您必须在哪里使用正确的案例名称才能使自动加载工作?是否应该选择第一个资本名称,如
Application
Modules
Default
Controllers
Views
...
欢迎任何想法和提示。
答案 0 :(得分:2)
“Plugin_Controller_Acl_Plugin”是唯一无法加载的类吗?如果是这样,你应该尝试在插件中的每个目录(如插件/ Controller / Acl)使用大写,因为自动加载器只将命名空间的“Plugin_”部分与“plugins”目录相关联,其他部分将被加载,就像其他类(保留大写目录名,只有下划线将转换为目录分隔符)。看一下Zend_Application_Module_Autoloader的默认设置,你应该在那里列出的目录下使用大写目录名(表单,插件等)。