定制 andersonef/cep-promise-php 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

andersonef/cep-promise-php

Composer 安装命令:

composer require andersonef/cep-promise-php

包简介

Cópia do projeto filipedeschamps/cep-promise, porém em PHP. A idéia não é copiar fielmente a implementação, mas a funcionalidade afim de praticar apenas.

README 文档

README

CEP Promise

Busca por CEP integrado diretamente aos serviços dos Correios, ViaCEP e WideNet.

Descrição

Essa biblioteca é uma cópia da original feita pelo Filipe Deschamps (Michel Teló) que achei a premissa bastante interessante e decidi copiá-la em PHP e Python.

O estilo do código é outro, visto que o Filipe usa JS com uma abordagem funcional, já eu nesse projeto optei por utilizar orientação a objetos guiada por testes.

Features

  • Sempre atualizado em tempo-real por se conectar diretamente aos serviços dos Correios, ViaCEP e WideNet.
  • Possui alta disponibilidade por usar vários serviços como fallback.
  • Sem limites de uso (rate limits) conhecidos.
  • 100% de code coverage com testes unitários e integração.

Como Utilizar

Instalação

Instale via composer diretamente no bash com o comando:

composer require andersonef/cep-promise-php

Ou modifique seu arquivo composer.json acrescentando a biblioteca nas dependências:

    "require": {
        "andersonef/cep-promise-php": "^1.0.0"
    }

Utilização

A utilização é bem simples:

$promise = (new CepPromise('83322170'))->fetch(); 

// ASSÍNCRONO: Com a promise em mãos, eu posso tanto:
$promise->then(function($endereco) {
    // sua lógica aqui
});

// SÍNCRONO: 
$endereco = $promise->wait();

/** Endereço: 
 * {
  "cep": "83322170",
  "street": "Rua Rio Tocantins",
  "neighborhood": "Weissópolis",
  "city": "Pinhais",
  "state": "PR"
}
*/

O retorno será sempre um objeto do tipo Andersonef\CepPromise\ResponseAddress.

Customizando

Você pode criar novos serviços para fallback facilmente com essa biblioteca.

Um serviço é qualquer classe que implemente a interface Andersonef\CepPromise\Interfaces\ServiceInterface, logo:

class CepFromDatabase implements ServiceInterface
{
    public function fetch($cep): ResponseAddress
    {
        // .. your custom logic here
        $response = new ResponseAddress(
            $cep,
            $rua,
            $bairro,
            $cidade,
            $estado
        );
        return $response;
    }
}

Após criar seu service customizado, basta adicioná-lo à sua instância CepPromise, assim:

$cepFromDatabaseService = new CepFromDatabase();
$cepPromise = new CepPromise();

$endereco = $cepPromise
    ->clearServices() // OPCIONAL: elimina os services padrão (correios, viacep e widenet)
    ->appendService($cepFromDatabaseService)
    ->fetch('83322170'); // Agora a classe irá usar seu service customizado!

Tratando falhas

Qualquer erro nessa biblioteca irá disparar uma exception do tipo Andersonef\CepPromise\CepPromiseException.

Deixe suas sugestões

Fique a vontade para deixar sugestões nas issues!

Fonte

Esse pacote foi inspirado no original https://github.com/filipedeschamps/cep-promise

andersonef/cep-promise-php 适用场景与选型建议

andersonef/cep-promise-php 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 11 次下载、GitHub Stars 达 11, 最近一次更新时间为 2020 年 05 月 08 日, 在 PHP 生态内属于活跃度较高的组件。

我们在过去多个企业项目中使用过 andersonef/cep-promise-php 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 andersonef/cep-promise-php 我们能提供哪些服务?
定制开发 / 二次开发

基于 andersonef/cep-promise-php 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 11
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 11
  • 点击次数: 8
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 11
  • Watchers: 1
  • Forks: 3
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2020-05-08