在本主题中, 我们将讨论Magento 2的体系结构。Magento2具有与Magento 1完全不同的体系结构。设计该体系结构的目的是使源代码尽可能地扩展和模块化。这种方法的主要目的是使它可以根据项目的需要轻松地进行调整和定制。每个业务逻辑和功能都以模块的形式进行设计。因此, 每个模块都可以作为独立单元工作。
Magento 2具有模型视图ViewModel(MVVM)架构。该MVVM体系结构与模型视图控制器(MVC)密切相关, 因此可以在模型层和视图层之间提供更强大的分隔。 MVVC的简要说明如下:
文章图片
模型:它保存应用程序的业务逻辑, 并依赖于关联的类-用于数据库访问的资源模型。与MVC相似, 应用程序操作所必需的是数据管理逻辑和基本数据描述。模型响应来自视图的请求。
视图:视图是用户在屏幕上看到的图形界面。它负责显示对用户请求的响应。该视图是一种结构或布局, 它以特定格式表示数据。视图指定” 数据的外观” 。它是ViewModel提供的属性值或命令的更改的订阅者。
ViewModel:ViewModel与Model层进行交互, 仅向View层公开必要的信息。这是由Magento 2中模块的Block类处理的。值得注意的是, 这通常是MVC系统的Controller角色的一部分。在MVVM中, 控制器仅负责处理用户流, 这意味着它接收请求并告诉系统渲染视图或将用户重定向到另一条路线。
它包含一个转换为视图的模型, 还包含可用于影响该模型的命令。 ViewModel基本上是视图的抽象, 公开了公共属性和命令。
根据官方文档, Magento 2分为四层。
- 表示层
- 服务层
- 域层
- 持久层
文章图片
Magento 2的层架构的详细说明如下。
1)表示层
表示层是Magento 2体系结构的最上层。那时, 当我们与Magento的Web界面进行交互时, 我们正在与表示层代码进行交互。它包含所有控制器和View元素, 例如-布局, 模板, 块和css.js等。表示层通常使用服务协定来调用服务层。它可以与业务逻辑重叠。
Web用户(系统管理员)是表示层的用户
2)服务层
服务层是表示层和域层之间的中间层。它提供了表示层和域层以及特定于资源的数据之间的桥梁。服务层实现服务合同, 这些合同是使用PHP接口定义的。这些服务合同使我们可以在不中断系统的情况下添加或更改业务逻辑资源模型。这是使用依赖项注入配置文件(di.xml)完成的。
服务层授予对API(REST / SOAP或其他模块)的访问权限。它位于域层之上和表示层之下。
3)域层
域层负责业务逻辑。它不包含特定于数据库或特定于资源的信息。域层定义了包含业务逻辑的通用Magento数据对象或模型。此逻辑描述可以对特定类型的数据(例如客户对象)执行的操作。
为了通过MySQL调用从数据库中检索数据, 每个域层模型都有对资源模型的引用。
4)持久层
它描述了资源模型, 该资源模型负责使用CRUD(创建, 读取, 更新和删除)请求在数据库中提取和修改数据。为了完成这些请求, 资源模型包含SQL代码。还实现了其他业务逻辑功能。
【Magento 2的体系结构】例如-数据库功能实现和数据验证。