1. Magento 2 文件结构
app
此文件夹中有三个主要子目录,它们是design
、i18n
和etc
。您自定义的所有模块都应包含在app/code//
目录中。此外,这里还推荐您所有的第三方模块。
您应该将自定义商店主题存储在app/design/frontend
子目录下,并且所有管理主题都应存储在app/design/adminhtml
子目录中。
app/i18n
目录是存储语言包的文件夹。如果您想创建一个可以更好地满足客户需求的多语言商店,您可以使用此文件夹。
全新安装后,code
子目录将丢失。此外,为避免自定义模块与 Magento 的核心模块混合,您需要在vendor
目录中添加所有 Magento 核心模块。这是因为,与 Magento 1 版本中所有 Magento 核心模块都必须提交到其 Git 存储库不同,在 Magento 2 中,这两者是分开的。
通过包含 Magento 核心模块的 Composer,您可以存储所有已安装的软件包。升级供应商文件后,您可以在此文件夹中扩展模块,而不是直接在此文件夹中工作,这样您的所有更改都会被覆盖app/code/ or app/design
。
phpserver
这具有Router.php
可用于实现 PHP 内置服务器的文件。但是,不建议您使用此文件,因为它可能会给您的站点带来许多潜在的重大安全漏洞。
bin
Magento CLI 可执行脚本存储在此目录中。使用此脚本,将激活 Magento 命令,这有助于清除缓存或重新索引。
setup
这包含与 Magento 的安装设置相关的所有文件
generated
这是存储 Magento 生成的代码的地方。默认情况下,如果类被注入到构造函数中,Magento 会生成代码来创建不存在的工厂类。
var
这包括生成的类、会话、缓存、数据库备份和缓存的错误报告。在此文件夹中,您可以生成许多子目录的内容,包括var/di
运行php bin/magento setup:di:compile
时间。
var/log
存储 Magento 日志文件主要是 exception.log 和 system.log 文件。
var/cache
包含 Magento 的所有缓存。建议您使用php bin/magento cache:clean
命令清除缓存,以便查看您的开发更改。
dev
这包含所有 Magento 和供应商库文件。它还包括所有基于非模块的 Magento 代码。
lib
一个index.php
文件将存储在此目录中。您可以使用此文件在生产模式下运行应用程序。此目录为您提供了一种安全措施,可以限制对根目录资产的公共访问。此外,此文件夹还包括您的 Magento 主题生成的静态文件
pub
这是一个包含框架核心的目录。这里也是您可以安装附加模块的地方。供应商文件夹的所有操作都是使用 composer.json 文件进行的。如果您查看此文件夹,您将看到没有文件或文件夹。这仅仅是因为 composer.json 将创建这些文件和文件夹。您将能够看到在 composer.json 文件下定义的大量包。
2. 组件文件结构
您可以看到Magento 2 文件结构包含 app、bin、setup、phpserver、var、generated、lib、pub、dev。在下图中查看更多信息。
在提供了有关定义和结构的一些基本知识之后,在这一部分中,我将介绍组件类型的不同文件结构。Magento 的应用程序将查找创建组件的文件,包括组件文件结构内特定位置的配置文件。为了确保组件类型正常工作,您需要遵循预定义的文件结构。
根目录
组件的根目录与其名称匹配,还包括其所有子目录和文件。根据您安装 Magento 的方式,您的组件的根目录可以放在以下两个位置之一:
-
/app
: 这是组件开发的一个可取的位置。通过使用克隆 Magento 2 GitHub 存储库,您可以设置此环境。-
申请
app/code
模块 -
申请
app/design/frontend
店面主题 -
申请
app/design/adminhtml
管理员主题 -
申请
app/i18n
语言包
-
-
/vendor
:这个位置可以在 composer create-project 用于安装 Magento 2 元包的安装中找到,通过该包下载 CE 或 EE 代码。如果您提取压缩的 Magento 2 存档以安装 Magento,也可以找到此位置。
所需文件
所有组件都需要以下文件:
-
registration.php
:这是将您的组件注册到 Magento 的文件。在此文件中,组件的根目录名称用作组件名称。因此,默认情况下,组件安装在/vendor directory
. -
etc/module.xml
:这是定义组件基本信息的文件,例如组件依赖关系和版本号。版本号将用于确定在执行时更新哪些模式和数据bin/magento setup:upgrade
。 -
composer.json
:这是定义组件在运行时所需的依赖项的文件。
3.模块文件结构
在下图中,您将看到典型的文件结构如下所示:
常用目录
以下是一些常见的模块目录:
-
Block
:包括 PHP 视图类作为模块逻辑模型视图控制器(MVC)垂直实现的一部分。 -
Controller
: 包括 PHP 控制器类作为模块逻辑 MVC 垂直实现的一部分。 -
etc
:包括配置文件;尤其是module.xml
,这是必需的。 -
Model
: 包括 PHP 模型类作为模块逻辑 MVC 垂直实现的一部分。 -
Setup
:包括模块数据库结构和数据设置的类。这些数据在安装或升级时被调用。
其他目录
这些文件夹可以添加用于配置或其他项目辅助功能,例如本地化、插件和布局文件。
-
Api
: 包括任何暴露给 API 的 PHP 类。 -
Console
: 包括 CLI 命令。 -
Cron
: 包括 cron 作业定义。 -
CustomerData
: 包括部分文件。 -
Helper
: 包括聚合功能。 -
i18n
: 包括本地化文件。 -
Observer
: 包括用于执行来自侦听器的命令的文件。 -
Plugin
: 包括任何需要的插件。 -
UI
: 包括数据生成文件。 -
view
:包括视图文件,包含静态视图文件、电子邮件模板、设计模板和布局文件。