0
49

SHARE

Injeção de Dependência Manual em Plugins WordPress

Injeção de Dependência Manual em Plugins WordPress – WordPress Extremo Dia 4

Aprenda como usar injeção de dependência manual no WordPress para criar plugins mais limpos, testáveis e escaláveis. É o quarto passo da arquitetura extrema no WP.
Este post é a parte 4 de 18 da Série WordPress Extremo

E aí, dev! Hoje no Dia 4 da série WordPress Extremo, vou te mostrar um conceito que parece chato, mas que muda completamente o jogo quando você entende:

Injeção de Dependência – ou, como eu gosto de chamar:
“Fazendo seu código parar de criar coisas sozinho e deixar isso pra um gerente que organiza tudo.”

Vamos conversar sobre isso de forma simples, prática e sem frescura.


🤔 O que é Injeção de Dependência (DI)?

Quando um objeto precisa de outro pra funcionar, ele tem duas opções:

  1. Ele mesmo criar (new OutraClasse())
  2. Ou receber pronto de fora

A opção 1 é mais comum… mas acopla tudo e dificulta testes, manutenção e reuso.

A opção 2 — receber a dependência injetada — permite que você:

✅ Teste mais facilmente
✅ Troque implementações sem mexer no código que usa
✅ Centralize e gerencie seus objetos com clareza


🛠️ Exemplo real no plugin

Hoje vamos ajustar nosso HelloService para receber o UserRepository via construtor, em vez de instanciar direto com new.


🔧 Estrutura atual:

HelloService.php

namespace WpArquiteturaExtrema\Services;

use WpArquiteturaExtrema\Repositories\UserRepository;

class HelloService {
    public function execute() {
        $repo = new UserRepository();
        $editors = $repo->getEditors();

        foreach ($editors as $user) {
            error_log("Editor encontrado: " . $user->display_name);
        }
    }
}

Obs: Não preciso dizer que para o código acima funcionar, você precisa de usuários registrados como Editor, certo?


✅ Estrutura com DI (injeção manual)

HelloService.php

use WpArquiteturaExtrema\Repositories\UserRepository;

class HelloService {
    protected $repo;

    public function __construct(UserRepository $repo) {
        $this->repo = $repo;
    }

    public function execute() {
        $editors = $this->repo->getEditors();
        // ...
    }
}

Obs: repara que agora usamos o $this para puxar.

Init.php

use WpArquiteturaExtrema\Services\HelloService;
use WpArquiteturaExtrema\Repositories\UserRepository;

class Init {
    public function register() {
        add_action('init', [$this, 'init_plugin']);
    }

    public function init_plugin() {
        $repo = new UserRepository();
        $service = new HelloService($repo);
        $service->execute();
    }
}

Obs: Repare que aqui instanciamos UserRepository com $repo e passamos pra HelloService($repo).


💡 Benefícios dessa abordagem

  • Testes: você pode injetar um “FakeRepository” se quiser simular dados
  • Flexibilidade: você troca o repositório facilmente (ex: por um que consulta uma API)
  • Organização: seu código não decide suas dependências — ele só executa

⚙️ Próximos passos

  • Em breve, podemos automatizar isso com um container de injeção de dependências
  • E até usar uma biblioteca como league/container para projetos maiores

Mas por enquanto, a injeção manual já resolve 90% dos problemas de acoplamento.


🎯 Recado final

Se você chegou até aqui, parabéns!
Você já está trabalhando com um nível que a maioria dos devs WordPress nunca nem viu. E isso te destaca demais.


💬 Curtiu? Quer mais?

Se quiser se aprofundar nisso:

  • 👉 Temos mentorias e cursos
  • 👉 Segue lá no IG: @wp24horas

Ou comenta aqui sua dificuldade que eu te ajudo a implementar! 🚀

Navegação<< Como Usar Repositórios em Plugins para Separar Lógica de Dados – WordPress Extremo Dia 3Hooks Avançados no WordPress: apply_filters, do_action e boas práticas >>

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
Segurança Profunda em Plugins WordPress

Segurança Profunda em Plugins WordPress

Como Tratar Erros e Exceptions em Plugins WordPress do Jeito Certo

Tratamento de Erros e Uso Inteligente de Exceptions em Plugins WordPress

Como Implementar um Sistema de Logs Profissional em Plugins WordPress

Como Gerenciar Logs e Erros Internos em Plugins WordPress (Do Jeito Certo)

Como Criar um Bloco WordPress com Filtro por Múltiplas Categorias

Bloco de Posts com Filtro por Múltiplas Categorias

Como Filtrar Posts por Categoria em um Bloco Gutenberg

Filtrando Posts por Categoria no Editor do Bloco

Como Criar um Bloco Dinâmico no WordPress com Renderização PHP

Bloco Dinâmico com Renderização no Servidor

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!