Download the PHP package engfabiodesalvi/busca-cep-php without Composer
On this page you can find all versions of the php package engfabiodesalvi/busca-cep-php. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download engfabiodesalvi/busca-cep-php
More information about engfabiodesalvi/busca-cep-php
Files in engfabiodesalvi/busca-cep-php
Package busca-cep-php
Short Description Biblioteca PHP para consulta de CEP utilizando múltiplos provedores
License MIT
Informations about the package busca-cep-php
Busca CEP PHP
Uma biblioteca PHP moderna para consulta de CEP utilizando múltiplos provedores, implementando mecanismos de Retry, Failover, Circuit Breaker e Logging, com arquitetura baseada em boas práticas de desenvolvimento e componentes desacoplados.
A biblioteca centraliza consultas a diversos serviços de CEP em uma única API, permitindo que aplicações utilizem diferentes provedores de forma transparente e resiliente.
Principais características
- Compatível com PHP 8.3+
- Instalação via Composer
- Arquitetura em camadas
- PSR-4 Autoload
- Value Objects
- DTOs
- HTTP Client próprio utilizando funções nativas do PHP
- Múltiplos provedores
- Retry automático
- Failover automático
- Circuit Breaker
- Sistema de Logging
- Configuração centralizada
- Tratamento de exceções
- Testes unitários
- Testes de integração
- Código compatível com PSR-12
Arquitetura
Instalação
Requisitos
- PHP 8.3 ou superior
- Composer
Provedores suportados
| Provider | Suporte |
|---|---|
| AwesomeApi | ✅ |
| BrasilAPI | ✅ |
| CepAberto | ✅ |
| OpenCep | ✅ |
| ViaCep | ✅ |
A arquitetura permite adicionar novos provedores facilmente sem modificar o restante da biblioteca.
Primeiro exemplo
Exemplo completo
Configuração
Alguns provedores necessitam de autenticação.
A biblioteca possui uma classe de configuração para armazenar parâmetros globais.
Exemplo:
Utilizando arquivo .env
Leitura da variável:
Dessa forma cada usuário utiliza seu próprio token sem alterar o código da biblioteca.
Retry
Caso um provedor apresente falha temporária, a biblioteca realiza novas tentativas automaticamente.
Failover
Se um provedor permanecer indisponível, a biblioteca tenta automaticamente o próximo provedor disponível.
Circuit Breaker
Providers que apresentam falhas consecutivas podem ser temporariamente ignorados, evitando chamadas repetidas para serviços indisponíveis.
Logging
A biblioteca suporta diferentes implementações de log.
Implementações disponíveis:
- NullLogger
- ConsoleLogger
Exemplo:
Tratamento de exceções
A biblioteca possui exceções específicas para facilitar o tratamento de erros.
- CepException
- HttpException
- InvalidCepException
- NormalizerException
- ProviderException
Exemplo:
Adicionando um novo Provider
Cada novo provedor deve implementar sua própria classe.
Também deverá possuir seu respectivo Normalizer.
Nenhuma modificação nas demais classes será necessária.
Estrutura dos testes
Os testes contemplam:
- Value Objects
- DTOs
- Normalizers
- Providers
- Integração
Qualidade de código
Ferramentas recomendadas:
- PHPUnit
- PHPStan
- PHP_CodeSniffer
Executar testes:
Executar análise estática:
Executar PHPCS:
Organização do projeto
Exemplos
A pasta examples/ contém exemplos completos de utilização da biblioteca.
- Consulta simples
- Retry
- Failover
- Logging
- CEP Aberto
- Utilização de múltiplos provedores
Roadmap
Funcionalidades planejadas:
- Cache PSR-16
- Consulta em lote
- Busca por endereço
- Consulta assíncrona
- Suporte a Guzzle
- Suporte a PSR-18
- Métricas dos provedores
- Eventos
- Plugins de provedores
Contribuindo
Contribuições são bem-vindas.
- Faça um Fork.
- Crie uma branch.
- Implemente sua melhoria.
- Execute todos os testes.
- Envie um Pull Request.
Licença
Este projeto está licenciado sob a licença MIT.
Autor
Fabio Toledo Bonemer De Salvi
Engenheiro Eletricista, estudante de Análise e Desenvolvimento de Sistemas e desenvolvedor de software.
GitHub:
https://github.com/engfabiodesalvi
Agradecimentos
Agradecimentos à comunidade PHP e aos mantenedores dos serviços públicos de consulta de CEP utilizados por esta biblioteca.