Magento 2 Curso Arquitetura Básica

Há dois arquivos que são obrigatórios para inicializar um módulo: registration.php, module.xml.

A arquitetura de um módulo em Magento 2 mantém os arquivos do módulo num diretório único.

app/code/CompanyName/ModuleName
vendor/vendor-name/module-name

Neste minicurso trabalharemos com a estrutura: app/code/CompanyName/ModuleName

Desenvolvendo um Módulo para Magento 2

Abra o seu projeto Magento 2, na raiz do projeto, no diretório app/code, crie a seguinte estrutura: AbraaoMarques/NewsletterModal, conforme abaixo:

Magento 2 Curso Arquitetura Básica - Estrutura Inicial de um Módulo

Observação: Se você fez uma instalação recente do Magento 2, provavelmente não terá os diretórios app/code já disponíveis. Então, basta criá-los pra dar continuidade a este minicurso.

2º Observação: Estarei usando o meu nome como vendor do módulo. Caso queira, poderá criar com o seu nome ou com o nome da sua empresa. Mas tenha cuidado ao criar os arquivos para não quebrar o funcionamento do seu módulo.

Inicializando um Módulo

Crie o arquivo registration.php e o etc/module.xml:

Magento 2 Curso Arquitetura Básica - Desenvolvendo o módulo

Adicione o script abaixo em registration.php:

<?php
\Magento\Framework\Component\ComponentRegistrar::register(
    \Magento\Framework\Component\ComponentRegistrar::MODULE,
    'AbraaoMarques_NewsletterModal',
    __DIR__
);

E o script em etc/module.xml:

<?xml version="1.0"?>
<!--
/**
 * Copyright © Magento, Inc. All rights reserved.
 * See COPYING.txt for license details.
 */
-->
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
    <module name="AbraaoMarques_NewsletterModal" setup_version="0.0.1">
    </module>
</config>

Feito isso, execute o comando:

php bin/magento setup:upgrade

Pronto! Acabamos de registrar o nosso primeiro módulo no Magento 2!!!

Você poderá conferir o módulo instalado pelo app/etc/config.php e pelo banco:

Magento 2 Curso Arquitetura Básica - Config,php
Magento 2 Curso Arquitetura Básica - Banco de Dados

Explicando o Funcionamento do registration.php e etc/module.xml:

registration.php

Ele é incluído pelo Composer autoloader:

app/etc/NonComposerComponentRegistration.php
<?php
/**
 * Copyright © Magento, Inc. All rights reserved.
 * See COPYING.txt for license details.
 */

$pathList[] = dirname(__DIR__) . '/code/*/*/cli_commands.php';
$pathList[] = dirname(__DIR__) . '/code/*/*/registration.php';
$pathList[] = dirname(__DIR__) . '/design/*/*/*/registration.php';
$pathList[] = dirname(__DIR__) . '/i18n/*/*/registration.php';
$pathList[] = dirname(dirname(__DIR__)) . '/lib/internal/*/*/registration.php';
$pathList[] = dirname(dirname(__DIR__)) . '/lib/internal/*/*/*/registration.php';
foreach ($pathList as $path) {
    // Sorting is disabled intentionally for performance improvement
    $files = glob($path, GLOB_NOSORT);
    if ($files === false) {
        throw new \RuntimeException('glob() returned error while searching in \'' . $path . '\'');
    }
    foreach ($files as $file) {
        include $file;
    }
}

Isso adiciona o nosso módulo a uma lista de módulos, componentes, estáticos.

vendor/magento/framework/Component/ComponentRegistrar.php

Após isso, o Magento 2 buscará pelo etc/module.xml do nosso módulo.

O etc/module.xml especifica a versão de configuração e a sequência de carregamento do módulo.

A sequência informa ao Magento em que ordem o módulo deverá ser carregado.

vendor/magento/framework/Module/ModuleList/Loader.php

Este ajuste ocorre apenas quando o módulo está instalado.

Você pode confegir a lista dos módulos instalados em:

app/etc/config.php

E aí? Gostou do artigo? Que tal nos ajudar a divulgá-lo?! Compartilhe o link desse artigo com todos os devs que querem aprender a trabalhar com Magento 2!

Dúvidas? Posta aí!!!

Aquele abraço!

2 respostas a “Magento 2 Curso Arquitetura Básica”

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *