【问题标题】:What are Zend Framework modules?Zend 框架模块是什么?
【发布时间】:2015-05-11 22:55:11
【问题描述】:
我想使用该框架构建一个简单的 CRUD 站点,但我对其文件结构/概念感到困惑。我了解 MVC 的概念,我过去曾使用 CodeIgniter 做过项目。我正在关注他们official site 上的教程,做了很多配置并尝试在他们提供的骨架应用程序中创建一个模块,这样做没有问题。所以这是我的问题,
每个模块本质上是一个网站吗?每次创建使用该框架的新网站时,是否在该 Zend 应用程序文件夹中创建一个新模块?
或者,网站的每个页面/子页面是否都是一个模块?
【问题讨论】:
标签:
php
zend-framework
zend-framework2
【解决方案1】:
在模块出现之前(也就是说在 Zend 2 之前),您必须手动声明包含属于不同容器(模块)的不同类型控制器的文件夹。这当然不是很方便,而且我很确定他们采用的模块系统更像是面向模块的 Symfony 2。
模块不一定是网站,但可以是您网站的一部分:例如,您可以将一个模块用于管理员访问,而将另一个模块用于公共访问。
希望对你有帮助
【解决方案2】:
来自the ZF2 documenation
模块系统的设计考虑了灵活性、简单性和可重用性。一个模块可能包含几乎任何东西:PHP 代码,包括 MVC 功能;图书馆代码;查看脚本;和/或公共资产,例如图像、CSS 和 JavaScript。无限可能。
对 MVC 模式的一般回答。
模块是网站的一个独立部分。任何你认为可以分解得更小的东西都应该是。一个模块可能是一个出现在一个(或多个)页面上的注册表单。它可能会处理表单的提交并将结果返回以显示在页面上(包括表单)。
另一个常见模块的例子是菜单栏。组织页面并为菜单生成 HTML 的代码都将构成一个模块。实际的页面本身可能是另一个模块,您的菜单模块与您的页面模块对话以获取需要输出的页面列表。
任何数据库表通常都是一个模块。处理与该表交互的任何内容都通过该模块。该模块通常被其他模块查询以获取信息,或传递信息以保存在表中/从表中删除。
您还可以拥有更大的模块,例如 CMS 页面。该模块负责获取 slug 并在数据库中查找页面。然后它可能会要求其他几个模块用内容填充页面,告诉他们它需要输出什么页面。然后他们会开始获取页面的内容,生成页面的特定部分并将其传递回原始模块,后者将所有内容放在一起并返回完整的页面 HTML。
Frameworks 还将附带各种模块。我知道 Laravel 带有一个用于注册和验证用户的模块。它有一个使用对象关系映射方法访问数据库的模块(Eloquent,这可能是我没有检查过的几个模块)。助手是模块,例如表单生成器助手是一个模块。