Zend Framework应用程序的默认模块化目录结构

时间:2009-09-12 20:01:57

标签: zend-framework directory structure

我知道手册中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开发人员不使用它。

5 个答案:

答案 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/