Zend Framework 2目录结构组织

3

有人能为ZF2提出最佳的目录结构组织吗?例如,我有:

  • 几个控制器助手,
  • 自定义视图助手
  • 额外的库,如PHPExcel
  • 自定义类
  • Auth、ACL类
  • 事件处理程序等

那么对于这些内容,最佳的(易读的)目录结构是什么。

1个回答

4

有两种结构:应用程序结构和模块结构。

应用程序

您的应用程序的默认和推荐目录结构如下:

config/
  autoload/
module/
public/
vendor/

有一个 config/application.config.php 文件,位于 config/autoload 目录中,其中包含应用程序特定的配置,它会覆盖任何模块特定的配置。

module/ 目录中,您可以放置所有的应用程序模块。如果您使用第三方模块或者自己制作了可重用的模块,最好将这些模块放在 vendor/ 目录中。这样,您就可以清楚地区分应用程序特定模块和非应用程序特定模块。

public/ 是您的 Web 根目录。您可以在此处放置 index.php 以及样式、脚本和其他资源。

示例:一个完美的示例是在 vendor/ 目录中放置一个名为 PHPExcel 的目录。

模块

模块具有默认和推荐的结构,如下所示:

MyModule/
  config/
  src/
    MyModule/
      Controller/
        Plugin/
      Form/
      Service/
      View/
        Helper/
  view/

所有的php代码都放在src/目录中。由于src/遵循PSR-0标准,您的顶级命名空间(MyModule)将在src/目录下重复出现。在此目录下,您可以放置所有模块代码。
就像Zend Framework 2中的helpers (Zend\Mvc\Controller\Plugin\SomePlugin)一样,我会将它们放在Controller/Plugin目录下。对于视图辅助程序,您也可以采用相同的方式:类比于Zend\View\Helper\SomeHelper,我建议您将辅助程序放在View/Helper目录下。
然后你需要处理“自定义类”,“auth, acl classes”和“event handlers, so on”。这取决于它们所做的工作。有时我会在我的模块源代码中创建一个Listeners/目录,其中包含事件侦听器。Acl和身份验证也可以存储在Auth/Acl/目录中。这取决于情况,最重要的是遵循PSR-0和将源封装在模块中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接