Magento 2详细教程讲解(一)

Magento 2的概述

Magento是目前世界上最大的开源电子商务平台。由于其丰富的、可扩展的代码库特性,世界各地大大小小的商家都在使用它进行各种各样的项目。

Magento 1已经问世8年,其继任者Magento 2于2015年底发布,改进了之前版本的不足之处,如:

  • 更强性能
  • 官方自动化测试套件
  • 更好的后端UI
  • 现代的前端代码
  • 一种更加模块化的模块开发方式,文件包含在Magento代码中,而不是分散在各处
  • 减少模块之间的冲突,试图定制相同的功能

一年多一点的时间过去了,改进是明显的,尽管上面提到的问题并没有完全解决。现在完全可以肯定地说,Magento 2是一款比上一款强大得多的软件。Magento 2的一些改进包括:

  • 单元和集成测试,包括为定制模块创建单元和集成测试的官方和文档化方法
  • 模块是真正模块化的,所有文件都放在一个目录下
  • 更丰富的模板系统,允许主题开发人员创建n级模板层次结构
  • 在整个代码中采用了一系列有用的设计模式,提高了代码质量,降低了模块产生错误的可能性——其中包括自动依赖注入、服务契约、存储库和工厂等等。
  • 本机集成到Varnish作为一个完整的页面缓存系统,以及用于会话Redis和缓存操作
  • 支持php7

随着所有这些变化,Magento 2的学习曲线变得更加陡峭。在本指南中,我将向您展示如何开发第一个Magento 2模块,并为您指明继续学习的正确方向。让我们开始吧!

Magento 2教程预备知识

为了理解本文的其余部分,您必须了解以下技术/概念:

  • 面向对象的程序设计 (OOP)
  • PHP
  • 命名空间
  • MySQL
  • 基本的bash用法

综上所述,OOP可能是最重要的一个。Magento最初是由一组经验丰富的Java开发人员创建的,他们的遗留问题在整个代码库中都可以看到。如果您对自己的OOP技能不是很自信,那么在开始使用该平台之前回顾一下它可能是一个好主意。

Magento 2的架构概述

Magento的架构设计的目的是使源代码尽可能模块化和可扩展。这种方法的最终目标是让它能够根据每个项目的需要轻松地进行调整和定制。

定制通常意味着更改平台代码的行为。在大多数系统中,这意味着更改“核心”代码。在Magento中,如果您遵循最佳实践,大多数情况下可以避免这种情况,从而使商店能够以可靠的方式跟上最新的安全补丁和特性发布。

Magento 2是一个模型视图视图模型(MVVM)系统。MVVM体系结构与它的同级模型视图控制器(MVC)密切相关,它提供了模型和视图层之间更健壮的分离。下面是MVVM系统每一层的解释:

  • Model保存应用程序的业务逻辑,并依赖于相关的类(resourcemodel)进行数据库访问。模型依赖于服务契约将其功能公开给应用程序的其他层。
  • View 是用户在屏幕上看到的结构和布局——实际的HTML。这是在带有模块的PHTML文件中实现的。PHTML文件与布局XML文件中的每个视图模型相关联,这些视图模型在MVVM方言中称为绑定器。布局文件还可能分配JavaScript文件用于最终页面。
  • ViewModel与模型层交互,只向视图层公开必要的信息。在Magento 2中,这是由模块的块类处理的。注意,这通常是MVC系统控制器角色的一部分。在MVVM上,控制器只负责处理用户流,这意味着它接收请求,并告诉系统呈现视图或将用户重定向到另一条路由。

Magento 2模块由上述体系结构的部分(如果不是全部)元素组成。整体架构描述如下(来源):

Magento 2模块可以使用Composer (PHP的依赖关系管理器)定义外部依赖关系。在上面的图中,您可以看到Magento 2核心模块依赖于Zend框架、Symfony以及其他第三方库。

下面是Magento/Cms的结构,这是一个负责创建页面和静态块的Magento 2核心模块。

每个文件夹包含体系结构的一部分,如下所示:

  • Api:服务契约,定义服务接口和数据接口
  • Block:MVVM架构的视图模型
  • Controller:控制器,负责在与系统交互时处理用户流
  • etc: 配置XML文件——模块在此文件夹中定义自身及其部分(路由、模型、块、观察者和cron作业)。etc文件也可以被非核心模块用来覆盖核心模块的功能。
  • Helper:帮助类,它包含在多个应用层中使用的代码。例如,在Cms模块中,helper类负责为向浏览器显示准备HTML。
  • i18n: 保存用于翻译的国际化CSV文件
  • Model: 用于模型和资源绑定
  • Observer: 持有“观察”或“观察”系统事件的模型。通常,在触发此类事件时,观察者实例化一个模型来处理此类事件所需的业务逻辑。
  • Setup: 迁移类,负责模式和数据创建
  • Test: 单元测试
  • Ui:UI元素,如在管理应用程序中使用的网格和表单
  • view: 前端和管理应用程序的布局(XML)文件和模板(PHTML)文件

有趣的是,在实践中,Magento 2的所有内部工作都位于模块中。在上面的图像中,您可以看到,例如,Magento_Checkout负责结帐过程,Magento_Catalog负责产品和类别的处理。基本上,这告诉我们,学习如何使用模块是成为Magento 2开发人员最重要的一部分。

好了,在对系统架构和模块结构进行了相对简单的介绍之后,让我们做一些更具体的事情,好吗?接下来,我们将通过传统的博客教程,让您熟悉Magento 2,并逐步成为Magento 2开发人员。在此之前,我们需要建立一个开发环境。让我们开始吧!

继续学习请点击Magento 2详细教程讲解(二)

如果有不懂的地方请留言,SKY8G网站编辑者专注于研究IT源代码研究与开发。希望你下次光临,你的认可和留言是对我们最大的支持,谢谢!

上一篇: PHP use和namespace关系和联系

下一篇: Magento 2详细教程讲解(二) 

登录 评论
avatar