2015-04-16 101 views
2

在过去的几周里,我看到了一些Zend Framework 2项目。在比较它们时,我注意到它们基本上都遵循相同的结构:Zend Framework 2应用程序结构

一个名为application的模块处理网站的所有操作 - 应用程序不同部分的“前端逻辑”(如新闻帖子,用户配置文件,电子邮件设置等)。

对于应用程序的每个部分,至少有一个模块,但只包含“后端逻辑”(添加新闻,删除用户等)。

我认为他们都建立在Zend Framework 2骨架应用程序之上。

这是一个最佳实践,还是有任何其他常见或推荐的模式,如何构建一个应用程序?为什么我不能写一个包含后端&前端部分的新闻发布模块?

此外,我应该如何模块化编写模块 - 我的意思是可以将简单的功能扩展到多个模块中,但这样做可能并不总是明智的。有没有任何指标?

回答

0

这只是开发人员的个人喜好。骨架应用程序只有一个名为“应用程序”的模块开始,这就是为什么你可能会看到很多。这不是必需的 - 我通常将它重命名为更适合的东西。

不管您希望如何组织模块。您当然可以创建一个具有前端和后端功能的新闻模块 - 以任何对您的应用程序有意义的方式来构建它们。

当考虑“模块化”如何制作东西时,请考虑是否可能要在未来的其他项目中重用该功能。如果是,那么把它变成它自己的模块可能是有道理的。

3

这是一个最佳实践,或者是否有任何其他常见或推荐的 模式关于如何构建应用程序?

答案是否定的,存在对Zend框架2个应用程序,违背ZF1没有predifined结构。您可以自由定义适合您需求的结构。这是由于Zend\Loader\StandardAutoloader建立了类的路径,该类通过将该名称空间的基本目录路径预先添加到类名称中,然后包含该类。所以你的应用程序文件夹目录的结构可以按你的需要组织。

此框架应用程序使用的标准结构是,只是由ZF2团队提供的一个建议。如果您认为您的需求最适合于不同的结构,那么您不必遵循它。

zf2application 
├── config 
│ ├── application.config.php 
│ └── autoload 
│  ├── global.php 
│  └── local.php.dist 
├── data 
│  └── cache 
├── init_autoloader.php 
├── module 
│  └── Application 
├── public 
│  ├── css 
│  ├── images 
│  ├── index.php 
│  └── js 
└── vendor 
     ├── ZF2 
     └──init_autoloader.php 

通过了Zend小组定义和建议报告该模块的结构尊重PSR0标准。您可以添加不同结构的模块,这些模块的结构与推荐的不同,但除了PSR0标准外,还必须遵守一些规则,其中包括模块根部的module.php文件。

您可以在Rob Allen的文章Thoughts on module directory structure中阅读更多内容,它解释了如何在尊重推荐标准的同时更改模块目录结构。

另外,我应该怎样模块化写模块?

模块是重新组合应用程序的一个或多个功能(前端/后端/设计)的组件。使用模块的主要优点是它们将代码分开,并可以在许多其他应用程序中重用。记住这个想法,你就能知道你什么时候应该创建一个模块,什么时候不应该。

您也可以参考how to write better Zend Framework 2 modules上的优秀帖子。