Pular para o conteúdo
Voltar para a home

Arquitetura para PHP legado

Maybe

Erros e ausência viram estados explícitos, adotados gradualmente nas bordas de sistemas PHP 7.4.

Status
implementado
Commit-fonte
main
Licença
Verificar no repositório antes de reutilizar
Repositório
Ilustração de abertura do dossiê Maybe: colagem geométrica em papel, com formas recortadas e linhas de conexão.

Contexto

Sistemas legados misturam null, false, exceções e validações no mesmo fluxo. Maybe explora uma transição incremental que não exige reescrita: cada camada pode entrar sozinha, começando pela borda onde dados externos atravessam o sistema.

Forças e restrições

  • Compatibilidade com PHP 7.4.
  • Adoção gradual em código existente.
  • Concorrência por processos com fronteiras de segurança claras.

Decisões

  1. 01

    Erros explícitos

    Result e Option tornam falha e ausência parte do contrato.

  2. 02

    Adoção nas bordas

    Schema e DTO entram primeiro onde dados externos atravessam o sistema.

  3. 03

    Async como processo

    O núcleo continua síncrono; concorrência, timeout e serialização pertencem a uma fronteira própria.

Atributos de qualidade

Atributos de qualidade de Maybe: abordagem adotada e evidência correspondente.
AtributoAbordagemEvidência
CompatibilidadeAPI compatível com PHP 7.4.Restrição declarada pelo projeto.
SegurançaValidação antes de cruzar processos.Schema, DTO e contratos explícitos.
EvoluçãoSchema → DTO → Result → Option → Async.Camadas podem ser adotadas incrementalmente.

Evidências

  • API pública

    Tipos e exemplos versionados no repositório.

  • Fronteira Async

    Serialização, timeout e isolamento são responsabilidades observáveis.

Limites conhecidos

  • Async não substitui filas duráveis nem supervisão operacional.
  • A aplicação continua responsável por idempotência, recursos e recuperação.
  • Licença e commit-fonte aguardam fixação após auditoria.

Mapa arquitetural

Mapa arquitetural de Maybe, em 4 nós
  1. null / false / throw — risco. Semânticas concorrentes no legado.
  2. Schema + DTO — fronteira. Dados ganham forma na borda.
  3. Result + Option — decisão. Erro e ausência entram no contrato.
  4. Async isolado — evidência. Processos com timeout e serialização explícitos.