有人可以为 ZF2 提出最佳的目录结构组织吗?例如我有:
- 几个控制器助手,
- 自定义视图 hwlpers
- 其他库,如 PHPExcel
- 自定义类
- 身份验证、ACL 类
- 事件处理程序等
所以这是最好的(读得很好的)目录组织。
有人可以为 ZF2 提出最佳的目录结构组织吗?例如我有:
所以这是最好的(读得很好的)目录组织。
有两种结构:应用结构和模块结构。
应用
您的应用程序的默认和推荐目录结构如下:
config/
autoload/
module/
public/
vendor/
有一个config/application.config.php
文件,在config/autoload
目录中你有应用程序特定的配置,它覆盖任何模块特定的配置。
在module/
您放置所有应用程序模块的目录中。如果您使用 3rd 方模块或制作了一些可重用的模块,则最好将它们放在vendor/
目录中。这样,您就可以清楚地区分应用程序特定模块和非应用程序特定模块。
这public/
是您的网络根目录。在那里你有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 类”和“事件处理程序,等等”。这真的取决于他们所做的工作。有时Listeners/
我的模块源中有一个目录,事件侦听器所在的位置。Auth/
Acl和身份验证也可以存储在Acl/
目录中。这真的取决于具体情况,最重要的是你遵循 PSR-0 并且源被封装在一个模块中。