Voltar aos projetos

Arquitetura para PHP legado

Maybe

Desenvolvo tipos Result e Option, Schema e DTO para tratar erros, ausência e dados externos em sistemas PHP 7.4.

Restrição principal

Compatibilidade com PHP 7.4.

Decisão central

Usei Result para representar sucesso ou erro e Option para representar presença ou ausência.

Fluxo do projeto

Fluxo do projeto
Dados externos atravessam Schema e DTO. Result representa sucesso ou erro e Option representa presença ou ausência. A adoção acontece gradualmente.

Contexto

Desenvolvo o Maybe para tratar erros, ausência e validação em sistemas PHP 7.4. Usei Result e Option para representar estados que costumam aparecer como null, false ou exceções.

Organizei Schema e DTO para a entrada de dados externos. As camadas podem ser adotadas aos poucos, sem exigir a reescrita da aplicação.

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. Erros explícitos

    Usei Result para representar sucesso ou erro e Option para representar presença ou ausência.

  2. Adoção nas bordas

    Organizei Schema e DTO para validar dados externos e permitir adoção gradual.

  3. Async como processo

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

Atributos de qualidade

Compatibilidade

API compatível com PHP 7.4.

EvidênciaRestrição declarada pelo projeto.

Segurança

Validação antes de cruzar processos.

EvidênciaSchema, DTO e contratos explícitos.

Evolução

Schema → DTO → Result → Option → Async.

EvidênciaCamadas 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.
  • Ainda preciso verificar a licença e concluir a auditoria. A referência main é móvel; falta fixar o commit-fonte.