Php 何时在Zend框架中使用模块?

Php 何时在Zend框架中使用模块?,php,model-view-controller,zend-framework,architecture,Php,Model View Controller,Zend Framework,Architecture,设置新的ZF项目时,我通常有以下目录结构: 应用 模块 违约 控制器 形式 看法 模型 管理员 控制器 形式 看法 模型 语言 共享 模型 图书馆 公开的 我只在布局不同的情况下使用模块,或者使用不同的数据库,或者当然是在非常特殊的情况下,如管理员后端或论坛/董事会。然后我为应用程序的不同部分提供了控制器。e、 g作业控制器、产品控制器等 我的一个同事给我看了他的基地布局。几乎一样,但他使用了很多模块。与作业模块、产品模块一样,每个模块主要有两个控制器:IndexCont

设置新的ZF项目时,我通常有以下目录结构:

  • 应用
    • 模块
      • 违约
        • 控制器
        • 形式
        • 看法
        • 模型
      • 管理员
        • 控制器
        • 形式
        • 看法
        • 模型
    • 语言
    • 共享
      • 模型
  • 图书馆
  • 公开的
我只在布局不同的情况下使用模块,或者使用不同的数据库,或者当然是在非常特殊的情况下,如管理员后端或论坛/董事会。然后我为应用程序的不同部分提供了控制器。e、 g作业控制器、产品控制器等

我的一个同事给我看了他的基地布局。几乎一样,但他使用了很多模块。与作业模块、产品模块一样,每个模块主要有两个控制器:IndexController和AdminController

他的设置是正确的,但我从来没有见过这样的方法,它似乎不必要的复杂

因此,要结束:

  • 什么时候使用模块,什么时候坚持使用 控制器?
  • 您决定模块与否的规则是什么?
  • 在你的观点中,我同事的设置有哪些利弊 视野范围?
  • 您认为我的设置有哪些利弊?
  • 短暂性脑缺血发作

    鲁菲努斯

    编辑:有关ZF2.0中重新设计的模块的信息,请参阅

    何时使用模块,何时使用 你会坚持使用控制器吗

    和你一样。对于我的网站的主要部分,如前端,管理部分,成员部分等

    你的规则是什么 不是模块

    它是主站点的一部分还是它自己的小世界只是与前端相关? 特别是在设计方面。如何管理使用相同布局的两个模块

    我的建议的利弊是什么 同事在您的工作地点的设置 风景

    我的天啊,维修费。所有这些文件夹都是免费的。为什么您的“关于”页面和“联系人”页面有两种不同的文件结构?如果他使用简单页面的模块,他会把管理员和成员放在哪里

    我的设置有哪些利弊 在你看来

    实际上与上述相反。易于理解和连贯的结构

    值得一提的是,zend团队希望我们以这种方式使用它

    另一件需要考虑的事情是你的URL会是什么样子

    myapp.com/contact

    myapp.com/about

    myapp.com/members/profile

    myapp.com/members/profile/edit

    myapp.com/members/mail

    这是一种帮助组织模块或控制器中的内容的简单方法

    在你看来,我同事的设置有哪些利弊

    更好的可重用性。假设您的同事将代码独立于其他模块保存在模块中,他实际上创建了一个自包含的问题域。与您的方法不同,他可以更轻松地将整个模块复制到其他应用程序。

    Q)您何时使用模块以及何时使用控制器

    A) 对我来说,这完全取决于应用程序的大小。当您有超过10个控制器时,您可能需要考虑将其中的一些重构为一个单独的模块。如果您正计划构建一个非常大的应用程序,那么在开始之前将其分为模块是值得的

    Q) 你的规则是什么来决定模块与否

    A) 就像我说的,有超过10个控制器

    Q) 在你看来,我同事的设置有哪些利弊

    A) 如果这是一个小项目,他会过度设计它,这将使其他开发人员更难投入其中,并将花费他比最初需要更长的时间来开发。他还冒着混淆自己的风险

    Q) 在你看来,我的设置有哪些利弊

    A) 我上面的回答几乎涵盖了这一点,如果这是一个较小的项目,从长远来看,你的方式将更快,更少混乱。我更喜欢这种方法,如果范围扩大,就重新考虑一下

    …与作业模块、产品模块一样,每个模块主要有两个控制器:IndexController和AdminController

    那种描述对我来说有点危险。如果这是一个非常大的项目,需要依赖于高可恢复性,如果他对这些模块进行编码,使它们能够独立于系统中的其他模块工作,并且如果需要隔离每个模块的管理区域,那么这可以被认为是一种合理的方法

    但我认为工作和产品之间可能存在依赖关系,在这种情况下,这种模块方法听起来像是过度工程。特别是在似乎强制执行了任意“规则”的情况下(如每个模块一个业务对象)

    此外,大多数MVC框架都会假设,如果您有作业和产品模型,那么您就有作业和产品控制器(而不是每个实体的IndexController)。模块的目的是分离站点的逻辑和表示区域,而不是划分业务逻辑


    虽然就适当的MVC而言,它可能既不在这里也不在那里,但创建一个不能完全独立于其他模块运行的模块对我来说是没有意义的。

    谢谢您的回答。-你有一个很好的观点,就像在我的方法,当我有一个论坛或管理模块,它独立于其他模块。但例如,有一个自己的用户模块,它很可能是其他模块所需要的。问题是依赖复杂性何时是不使用模块的原因。@Rufinus TBH,我发现ZF的模块一文不值,只要我不能在某个地方下载BlogModule,运行它的安装程序,然后砰的一声!我的应用程序有一个博客。你怎么能