Zend Framework 2目录组织

时间:2012-11-07 10:00:49

标签: zend-framework2

有人可以为ZF2提出最佳的目录结构组织。例如,我有:

  • 几个控制器助手,
  • 自定义查看hwlpers
  • 其他库,如PHPExcel
  • 自定义类
  • Auth,ACL类
  • 事件处理程序,依旧

这是最好的(读得很好)目录组织。

1 个答案:

答案 0 :(得分:4)

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

<强>应用

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

config/
  autoload/
module/
public/
vendor/

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

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

public/是您的webroot。你有index.php,你可以把你的风格,脚本和其他资产放在那里。

示例:一个完美的例子是在PHPExcel目录中有一个目录vendor/

<强>模块

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

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

所有的PHP代码都进入src/。由于src/遵循PSR-0标准,因此您在MyModule目录中重复了您的顶级命名空间(src/)。在此目录下,您拥有所有模块代码。

就像Zend Framework 2(Zend\Mvc\Controller\Plugin\SomePlugin)中的助手一样,我会将它们放在Controller/Plugin目录中。对于视图帮助程序,您具有相同的功能:模拟Zend\View\Helper\SomeHelper我建议您将帮助程序放在View/Helper目录中。

然后你留下了“自定义类”,“auth,acl classses”和“事件处理程序,等等”。这实际上取决于他们的工作。我的模块源中有时会有一个Listeners/目录,其中包含事件侦听器。 Acl和身份验证也可以存储在Auth/Acl/目录中。它实际上取决于具体情况,在这里最重要的是你遵循PSR-0并将源封装在一个模块中。