2015-05-11 21 views
1

我想使用框架构建一个简单的CRUD站点,但我对它的文件结构/概念感到困惑。我理解MVC的概念,过去我使用CodeIgniter完成了项目。我正在关注他们的official site上的教程,做了很多配置,并尝试在它们提供的框架应用中创建一个模块,这样做没有问题。因此,这里是我的问题,什么是Zend Framework模块?

  1. 每天模块本质上是一个网站?每当我创建一个使用该框架的新网站时,我是否会在该Zend应用程序文件夹中创建一个新模块?

  2. 或者,是网站的每个页面/子页面一个模块

回答

2

模块出来之前(即Zend的2)之前,你必须手动声明含有不同种类属于不同的容器(模块)控制器的文件夹中。这当然不是很方便,我很确定他们已经采用了模块系统,更像是Symfony 2,它是面向模块的。

模块不是必然一个网站,但可以是您的网站的一部分:例如,您可以使用一个模块进行管理访问,另一个模块用于公共访问。

希望这将帮助你

2

the ZF2 documenation

模块系统设计的灵活性,简单性和可重用性的初衷。一个模块可能包含任何东西:PHP代码,包括MVC功能;库代码;查看脚本;和/或公共资产(如图像,CSS和JavaScript)。可能性是无止境。

回答一般的MVC模式。

模块是网站的一个独立部分。任何你认为可以细分的东西都应该是。一个模块可能是一个页面上出现的注册表单(或多个)。它可能会处理表单的提交并将结果传递回来以显示在页面上(包括表单)。

通用模块的另一个例子是菜单栏。组织页面并为菜单生成HTML的代码都将构成一个模块。实际页面本身可能是另一个模块,并且您的菜单模块会与您的页面模块进行通信以获取需要输出的页面列表。

任何数据库表通常都是一个模块。处理与该表交互的任何事都要经过该模块。该模块通常由其他模块查询信息或传递信息以保存在表格中或从表格中删除。

您还可以拥有更大的模块,例如CMS页面。该模块负责采取slu and并在数据库中查找页面。然后,它可能会要求其他几个模块用内容填充页面,告诉他们需要输出哪个页面。然后,他们会关闭并获取页面的内容,生成页面的特定部分并将其传回原始模块,然后将它们放在一起并返回完成的页面HTML。

框架还将附带各种模块。我知道Laravel带有一个用于注册和认证用户的模块。它有一个使用对象关系映射方法访问数据库的模块(Eloquent,这可能是几个模块拉到一起,我没有检查)。助手是模块,例如一个表单生成器助手是一个模块。

+0

+1 ZF2和其他类似的框架将允许您创建独立的模块来帮助共享,重用代码和可维护性。 ZF2做[推荐模块目录结构](https://zf2.readthedocs.org/en/latest/modules/zend.module-manager.intro.html#introduction-to-the-module-system),但它完全是由您决定代码的组织方式或您创建的模块数量。 – AlexP