Glossário do Framework¶
Este glossário estabelece a linguagem ubíqua do local_middag. Ter clareza sobre esses termos é fundamental para localizar a camada correta de uma implementação e respeitar os contratos arquiteturais.
O que é¶
Uma coleção de definições técnicas e conceituais que padronizam o vocabulário entre desenvolvedores do core, builders de extensions e integradores terceiros.
Por que existe¶
Para evitar ambiguidade em conceitos que possuem nomes semelhantes em outros frameworks (como Signal vs Evento Moodle) e para garantir que cada componente seja nomeado conforme sua responsabilidade técnica e zona de consumo.
Termos Canônicos¶
Adapter¶
- Definição: Componente que isola o framework das APIs procedurais e globais do Moodle.
- Aonde vive:
classes/framework/support/moodle/ - Relação: Atua como a fronteira de integração com o ecossistema Moodle.
Audit¶
- Definição: Registro persistido e imutável que responde "quem fez o quê, quando e onde".
- Aonde vive:
classes/framework/application/service/audit/ - Relação: É gerado a partir de um Signal e pode conter referências a uma Revision.
Command¶
- Definição: Unidade de trabalho independente e serializável que encapsula a intenção de uma ação.
- Aonde vive:
classes/framework/application/command/ - Relação: Sua execução é governada e rastreada por um Job.
Contract¶
- Definição: Interface do PHP que define um papel arquitetural com propósito de variação, substituição ou DI.
- Aonde vive:
classes/framework/contract/ - Relação: Quando marcado com
@api, torna-se parte da API pública estável consumida via Facade.
Decorator¶
- Definição: Padrão de design usado para anexar comportamentos transversais (como cache ou auditoria) sem alterar a classe base.
- Aonde vive:
classes/framework/infrastructure/persistence/repository/decorator/ - Relação: Geralmente envolve um Repository para adicionar lógica de persistência extra.
Dispatcher¶
- Definição: O motor central responsável por publicar signals e gerenciar listeners.
- Aonde vive:
classes/framework/kernel/dispatcher/ - Relação: Publica as ocorrências que o framework chama de Signal.
Extension¶
- Definição: Módulo desacoplado que implementa funcionalidades de negócio integradas ao lifecycle do framework.
- Aonde vive:
classes/extensions/ - Relação: É descoberta e inicializada pelo Kernel.
Facade¶
- Definição: Ponto de entrada estático e estável que blinda consumidores externos da complexidade do core.
- Aonde vive:
classes/facade/ - Relação: Delega chamadas para serviços registrados no Container via Contracts
@api.
Filter¶
- Definição: Gatilho síncrono usado exclusivamente para transformar ou interceptar valores em um fluxo.
- Aonde vive:
classes/framework/application/service/filter/ - Relação: Diferente do Signal, o Filter sempre espera um retorno modificado.
Hook¶
- Definição: Projeção pública de uma ocorrência interna, seguindo a nomenclatura canônica
middag/nome_do_hook. - Aonde vive: Registrado via Extension ou Kernel.
- Relação: É a forma secundária (ergonômica) de reagir a um Signal.
Item¶
- Definição: A unidade fundamental de persistência flexível (EAV) do framework.
- Aonde vive:
classes/framework/domain/item/ - Relação: Possui metadados dinâmicos e é a fonte de verdade para Revisions.
Job¶
- Definição: Registro de governança que rastreia o status e as tentativas de execução de um trabalho assíncrono.
- Aonde vive:
classes/framework/infrastructure/persistence/repository/job_repository - Relação: Governa a execução de um Command.
Kernel¶
- Definição: O componente central que coordena o bootstrap, o container de DI e o lifecycle das extensions.
- Aonde vive:
classes/framework/kernel/ - Relação: Inicializa o Dispatcher e resolve as dependências via Container.
Repository¶
- Definição: Fronteira de persistência que isola o domínio do acesso direto ao banco de dados SQL.
- Aonde vive:
classes/framework/infrastructure/persistence/repository/ - Relação: Gerencia a recuperação e persistência de Items, Revisions e Audits.
Revision¶
- Definição: Snapshot imutável do estado de um Item em um ponto específico do tempo.
- Aonde vive:
classes/framework/infrastructure/persistence/repository/revision_repository - Relação: Toda Revision pertence obrigatoriamente a um Item.
Schedule¶
- Definição: Declaração de um gatilho temporal periódico para execução de tarefas.
- Aonde vive:
classes/framework/application/schedule/ - Relação: Dispara um Command em intervalos pré-definidos.
Signal¶
- Definição: Ocorrência tipada e interna que sinaliza que algo aconteceu no sistema.
- Aonde vive: Publicado via
middag::dispatch(). - Relação: É a fonte primária para reatividade, Auditoria e geração de Hooks.
O que não é¶
- Signal não é Evento Moodle: Signals são internos do framework e desacoplados; Eventos Moodle são da plataforma.
- Audit não é Revision: Audit diz quem fez; Revision diz como o dado ficou.
- Facade não é Service: Facade é uma porta; o Service é quem executa a lógica.