Skip to content

Por que injeção de dependência explícita? ​

NENE2 usa injeção de dependências explícita e escrita à mão em vez de autowiring ou magia de container baseada em convenções. Esta página explica o porquê.

O que significa injeção explícita ​

php
// RuntimeServiceProvider.php — cada dependência é escrita explicitamente
$container->bind(NoteRepositoryInterface::class, function (ContainerInterface $c) {
    return new PdoNoteRepository($c->get(DatabaseQueryExecutorInterface::class));
});

As razões para injeção explícita ​

1. O wiring é sempre encontrável ​

Com autowiring, responder "como esta classe é construída?" requer entender as regras de resolução do container. Com injeção explícita, grep -r 'NoteRepository' nos arquivos de service provider dá a resposta completa.

2. Erros falham na inicialização, não em runtime ​

Um binding explícito que referencia uma classe inexistente falha quando o container é construído.

3. Agentes de IA e análise estática podem seguir o grafo ​

A injeção explícita produz um grafo de dependências que grep, PHPStan e agentes LLM podem percorrer sem executar o container.

4. Sem acoplamento por anotações ou atributos ​

As classes de domínio da NENE2 não carregam anotações de container.

Compromissos ​

Injeção explícitaAutowiring
Sempre legívelMenos boilerplate
Falha rápida na inicializaçãoConveniente para scaffolding rápido
Sem magiaRequer aprender as regras do container
Verboso para muitas classesEscala automaticamente

Publicado sob a licença MIT.