我知道手册中Zend Framework模块化应用程序的默认目录结构。
/application
/controllers
/modules
/admin
/controllers
/views
/views
/configs
/www
index.php
但我想知道我为什么要这样做。在 / application 和 / application / modules /:moduleName 中的其他模块中使用默认模块真的很麻烦。这是一个讨论问题,而不是 help-me 问题。
拥有这样的目录结构有什么优缺点:
/application
/modules
/admin
/controllers
/views
/default
/controllers
/views
/configs
/www
index.php
从我的观点来看,唯一的缺点是它在默认/手动中不是这样写的。我看不到任何其他的东西。我错过了什么吗?
更多 - 我认为这个结构应该是任何新ZF应用程序的默认结构。我想知道为什么Zend开发人员不使用它。
答案 0 :(得分:5)
实际上,您建议的目录结构非常适合大型和复杂的应用程序。
Magento是当今世界上最好的开源电子商务解决方案,已经在Zend框架中编码,并使用类似的目录布局,这样就很容易扩展和添加新模块并管理旧模块。
对于简单的应用程序和学习Zend,我建议大家坚持使用默认的目录结构。
答案 1 :(得分:4)
我想这种方式是因为:
我想这是一个和其他任何一个一样好的解释。
尽管如此,如果开发一个包含多个模块的应用程序,并从一开始就知道这一点,我可能会选择你提出的那种结构,而不是默认的结构^^
在我看来,事情会更加清晰 - 而且我没有看到任何问题!
(事实上,很久以前我就是这样,并没有遇到任何麻烦 - 但这不是一个“完整”的应用程序;更多的原型......)
答案 2 :(得分:4)
实际上,这是http://framework.zend.com/manual/en/zend.controller.modular.html
上详述的选项之一你的方式听起来不错,ZF的重点是你可以自己选择如何管理。一个优点是代码略少。在Zend的默认方法中,您需要使用它:
$front = Zend_Controller_Front::getInstance();
$front->addControllerDirectory('/path/to/application/controllers', 'default');
$front->addModuleDirectory('/path/to/application/modules');
在您描述的方法中:
$front = Zend_Controller_Front::getInstance();
$front->addModuleDirectory('/path/to/application/modules');
只需要你。
Zend方法的一个优点是,如果您不需要模块,则无需运行addModuleDirectory()方法。使用您的方法,总是需要运行,可能会产生很小的开销。
此页面http://framework.zend.com/manual/en/project-structure.project.html表示在应用程序目录中具有默认控制器目录,为启动简单项目以及启动具有全局控制器/模型/视图的模块化项目提供了最佳布局。“
我想Zend的观点是,这适用于只有默认模块的简单站点和带有多个模块的更复杂的站点。解决模块/目录中的其他模块并不困难。但在一天结束时,这是个人偏好。
答案 3 :(得分:1)
我对同样的问题感到困惑。但是我没有成功地正确设置它...... 为什么我要使用它是因为模块化结构与Zen_Application相结合,实例化了一个Module_Bootstrapper,它自动注册/ application / module / name / forms(以及控制器,视图,模型等)中的命名空间。
我遇到的唯一问题是摆脱'默认'模块:S
您可以在这里找到关于Zend论坛的主题:http://forums.zend.com/viewtopic.php?f=69&t=2394&start=0
希望它会得到回答,我会把它发布在这里。
答案 4 :(得分:1)
您可以在此处找到所需的架构:http://www.osebboy.com/blog/zend-framework-modules/