0
34

SHARE

Separação Clara de Camadas - Core, Domain e Infra

Separação Clara de Camadas: Core, Domain e Infra

Aprenda como aplicar separação de camadas (core, domain, infra) no desenvolvimento de plugins WordPress e leve sua arquitetura a outro nível.
Este post é a parte 13 de 15 da Série WordPress Extremo: Arquitetura e Engenharia de Plugins

Fala Dev! Blz? Asllan aqui… vamos evoluir ainda mais nosso plugin agora com a Separação Clara de Camadas: Core, Domain e Infra!

Separar bem as camadas do seu plugin não é “frescura de programador chato”. É engenharia de verdade.

Neste post, você vai entender como organizar o seu plugin em 3 camadas fundamentais:

  • Core → Lógica de negócio que não depende de WordPress.
  • Domain → Contratos e regras do seu domínio (entidades, serviços, interfaces).
  • Infra → Tudo que é específico do WordPress (hooks, filtros, API REST, banco, etc).

😰 O problema de não separar as camadas

Você já viu plugins onde tudo acontece em uma classe só? Tipo assim:

class MeuPlugin {
  function init() {
    if (isset($_GET['acao'])) {
      $user = get_user_by('id', $_GET['user']);
      // envia email, salva log, atualiza post, etc
    }
  }
}

Esse tipo de código acopla lógica, acesso a dados e regras específicas num balaio só.

Resultado: difícil de testar, difícil de dar manutenção, e impossível de escalar.


✅ O que é essa separação de camadas?

Aqui vai o mapa da mina:

src/
│
├── Core/           <- Lógica isolada (pode ser testada fora do WP)
│   └── Services/
│       └── ValidadorDeCPF.php
│
├── Domain/         <- Regras do domínio (interfaces, contratos, entidades)
│   └── Contracts/
│       └── LoggerInterface.php
│   └── Entities/
│       └── Cliente.php
│
└── Infra/          <- Integrações específicas com o WordPress
    ├── Http/
    │   └── Controllers/
    │       └── ApiController.php
    ├── Repositories/
    │   └── UserRepository.php
    └── WordPress/
        └── Hooks.php

🚀 Como aplicar isso no plugin WP24H

Vamos supor que você tenha um serviço para validar uma assinatura via API.

1. Core → AssinaturaValidator.php

namespace WpArquiteturaExtrema\Core;

class AssinaturaValidator
{
    public function validar(string $token): bool
    {
        // Validação pura, sem WordPress
        return strlen($token) === 32;
    }
}

2. Domain → LoggerInterface.php

namespace WpArquiteturaExtrema\Domain\Contracts;

interface LoggerInterface
{
    public function info(string $message): void;
    public function error(string $message, array $context = []): void;
}

3. Infra → WordPressLogger.php

namespace WpArquiteturaExtrema\Infra;

use WpArquiteturaExtrema\Domain\Contracts\LoggerInterface;

class WordPressLogger implements LoggerInterface
{
    public function info(string $message): void
    {
        error_log("[INFO] $message");
    }

    public function error(string $message, array $context = []): void
    {
        error_log("[ERROR] $message - " . json_encode($context));
    }
}

🤖 Por que isso importa?

  • Testar sua lógica sem precisar carregar o WordPress.
  • Trocar a implementação de algo sem quebrar o resto.
  • Criar comandos WP-CLI, APIs, ou blocos Gutenberg que usam os mesmos serviços.

Agora você entende como tudo isso se encaixa num plugin robusto, sustentável e escalável.


✍️ Conclusão

Separar seu plugin por camadas não é exagero, é sobrevivência. Plugins bem escritos seguem esse modelo porque:

✔️ São testáveis
✔️ São fáceis de manter
✔️ São preparados para crescer

Agora seu desafio é adaptar nosso plugin, já muito bem estruturado, a essa nova engenharia.

Navegação<< Permissões Customizadas e Controle de Acesso em Plugins WordPressAtualizações Automáticas via GitHub. >>

Não perca mais nenhuma atualização aqui!

Ative as Notificações!

Clique aqui e, em seguida, clique em Permitir na caixa que aparecerá na parte superior da janela, próximo à barra de endereços.

Torne-se um Assinante e Eleve seu Conhecimento do WordPress!

Acesso Exclusivo, Suporte Especializado e Muito Mais.

Se você está aproveitando nosso conteúdo gratuito, vai adorar os benefícios exclusivos que oferecemos aos nossos assinantes! Ao se tornar um assinante do WP24Horas, você terá acesso a:

Não perca a oportunidade de maximizar seu potencial no WordPress. Clique no botão abaixo para se tornar um assinante e leve suas habilidades ao próximo nível!

Não perca mais nenhuma atualização aqui!

Tabela de Conteúdo
PUBLICIDADE
Últimos Posts
Como Carregar Scripts e Estilos no WordPress Apenas Quando Necessário

Scripts e Estilos Condicionais: Carregando apenas quando necessário

Internacionalização de Blocos Gutenberg (i18n)

Internationalização de Blocos Gutenberg (i18n)

Como Criar Blocos Condicionais no Gutenberg com Atributos

Como Criar Blocos Condicionais no Gutenberg com Atributos

Comunicação entre Blocos com Block Context API no WordPress

Comunicação entre Blocos com Block Context API no WordPress

Blocos Reutilizáveis com InnerBlocks no Gutenberg

Blocos Reutilizáveis com InnerBlocks no Gutenberg

Como Salvar Dados Personalizados no WordPress Usando Blocos Gutenberg e REST API

Salvando Dados Personalizados no Backend via REST API

Você precisa estar logado para ver esta informação.

Torne-se um Assinante e Eleve seu Conhecimento do WordPress!

Acesso Exclusivo, Suporte Especializado e Muito Mais.

Se você está aproveitando nosso conteúdo gratuito, vai adorar os benefícios exclusivos que oferecemos aos nossos assinantes! 

Não perca a oportunidade de maximizar seu potencial no WordPress. Clique no botão abaixo para se tornar um assinante e leve suas habilidades ao próximo nível!