3

我知道手册中 Zend Framework 模块化应用程序的默认目录结构。

/application
  /controllers
  /modules
    /admin
      /controllers
      /views
  /views
  /configs
/www
  index.php

但我想知道为什么我要这样做。在/application中拥有默认模块,在/application/modules/:moduleName中拥有其他模块,这真的很令人讨厌。这更像是一个讨论问题,而不是一个帮助我的问题。

具有这样的目录结构的优点和缺点是什么:

/application
  /modules
    /admin
      /controllers
      /views
    /default
      /controllers
      /views
  /configs
/www
  index.php

从我的角度来看,唯一的缺点是它在默认/手动中不是这样写的。我看不到任何其他的。我错过了什么吗?

甚至更多——我认为这个结构应该是任何新 ZF 应用程序的默认结构。我想知道为什么 Zend 开发人员不使用它。

4

5 回答 5

5

实际上,您建议的目录结构非常适合大型和复杂的应用程序。

Magento 是当今世界上最好的开源电子商务解决方案,它已在 Zend 框架中编码,并使用与您建议的目录布局类似的目录布局,这样可以非常轻松地扩展和添加新模块并管理旧模块。

同样对于简单的应用程序和学习 Zend,我建议每个人都坚持默认的目录结构。

于 2010-03-04T14:05:27.923 回答
4

我想这种方式是因为:

  • 有一个默认结构,当应用程序中没有模块时使用(即,只有一个默认模块——这意味着不需要“默认”目录)
  • 然后,您可以添加模块;无需修改现有结构。

我想这是一个和其他解释一样好的解释。


不过,如果开发一个包含多个模块的应用程序,并且从一开始就知道这一点,我可能会采用您提出的那种结构,而不是默认的 ^^

在我看来,事情会更清楚——而且我认为这没有任何问题!

(事实上​​,我在很久以前就有过这种方式,并且没有遇到任何麻烦——但这不是一个“完整”的应用程序;更多的是原型......)

于 2009-09-12T20:09:23.740 回答
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 的观点是,这既适用于只有一个默认模块的简单站点,也适用于具有多个模块的更复杂的站点。在 modules/ 目录中找出更多模块并不难。但归根结底,这是个人喜好。

于 2009-10-02T11:30:55.347 回答
1

我正在努力解决同样的问题。但我没有成功地正确设置它......为什么我要使用它是因为模块化结构与 Zen_Application 结合,实例化了一个 Module_Bootstrapper ,它在 /application/module/name/forms 中注册命名空间(和控制器,视图,模型等...)自动。

我遇到的唯一问题是摆脱“默认”模块:S

你可以在这里找到 Zend 论坛上的主题:http ://forums.zend.com/viewtopic.php?f=69&t=2394&start=0

希望它会得到答复,否则我会在这里发布。

于 2009-09-15T12:33:20.273 回答
1

你可以在这里找到你想要的架构:http ://www.osebboy.com/blog/zend-framework-modules/

于 2011-04-26T09:37:15.360 回答