2013-05-04 135 views
1

如果我在我的项目中有多个模块,例如我的UI模块和我的数据库模块......什么决定了哪个模块被执行?在application.config.php有一个数组,我在想,也许你的模块命名空间在那里列出的顺序会影响情况,但似乎并非如此。Zend Framework 2多个模块

我知道这是简单的,而且很可能在文档(我没看!)

TIA

+0

你问哪个问题?目的似乎很模糊。你想解决什么问题?请澄清。 – David 2013-05-06 14:15:41

+0

如果我有两个基本上与他们的名字相同的模块,Zend在打开网站时运行的是哪一个模块? – aserwin 2013-05-09 18:29:03

+0

所有的路由信息​​都存在于模块内部。似乎没有办法在应用程序级别上操作路由,那么Zend如何确定在加载站点时执行哪个模块? – aserwin 2013-05-09 18:30:31

回答

2

在ZF2“应用”仅仅是模块的容器。模块本身就是实现应用程序功能的东西。例如,在Zf2SkeletonApplication example中,应用程序的功能(不包括CSS,图像和javascript等资源)包含在a module called "application"之内。

加载ZF2项目时,将初始化在application.config.php中声明的所有模块,并将它们的配置(包括路由)合并到父应用程序配置中。

两个主要因素决定了广大什么代码的应用程序运行时被执行的:

  1. 包含在每个模块的Module.php文件(example from the Zf2 Skeleton)模块的初始化。此初始化代码定义模块的配置路径,自动加载和事件处理。出于性能目的,初始化代码需要尽可能轻。
  2. 路由本身定义了大部分剩余执行的入口点:哪些控制器在哪个模块中执行。然后控制器就会确定运行其他代码的程度,是否运行其他模块提供的库等。

为了简单起见,我省略了一些错综复杂的内容,但这是一个很好的总体概述。

ZF2 Getting Started Tutorial这样的教程对学习基础知识很有价值。


编辑:我要指出,“应用级路由”的“模块级”被修改,因为CONFIGS全部合并,模块本身实现应用程序。

+0

OOOOOHHHHHH!所以,模块可以看作是部分类(一个.NET)这对我来说更有意义。谢谢。 – aserwin 2013-05-09 21:56:12

+1

哈哈,有趣的观察。它们确实相似,但也有很大不同:.NET部分类位于语言级别,而ZF2模块位于应用程序体系结构级别之上。你明白了。 – David 2013-05-10 20:09:41