claudsonm/cep-promise-php

使用 Promises 在 Correios、ViaCEP、CepAberto 等服务中搜索 CEP。

v1.2.0 2022-10-09 11:50 UTC

README

Run Tests Check & fix styling Packagist All Contributors

这是一个针对 PHP 7.4 和 8.0+ 的无依赖包,它通过使用 Promises/A+ 在多个服务中搜索 CEP。它灵感来源于 Node.js 和网页浏览器的 CEP Promise 包。

特性

  • 以并发方式执行请求,始终返回最快的结果;
  • 由于使用了多个不同的服务提供者,因此具有很高的可用性;
  • 由于连接到包括 Correios 在内的多个服务,因此 CEP 数据库始终保持最新;
  • 没有已知的请求限制(速率限制);
  • 使用 guzzle/promises 包的 PHP 实现;

安装

推荐通过 Composer 安装此包。安装Composer后,执行以下命令:

composer require claudsonm/cep-promise-php

安装后,您需要通过以下指令请求Composer的自动加载器:

require 'vendor/autoload.php';

使用示例

示例 1

使用整数值搜索并返回对象形式的响应。

<?php

use Claudsonm\CepPromise\CepPromise;

require 'vendor/autoload.php';

$address = CepPromise::fetch(49040610);

/* 
Claudsonm\CepPromise\Address Object
(
    [city] => Aracaju
    [district] => Inácio Barbosa
    [state] => SE
    [street] => Rua Universo
    [zipCode] => 49040610
)
*/

示例 2

使用数字字符串搜索并返回数组形式的响应。

<?php

use Claudsonm\CepPromise\CepPromise;

require 'vendor/autoload.php';

$address = CepPromise::fetch('78710857')->toArray();

/*
 Array
(
    [city] => Rondonópolis
    [district] => Vila Marinópolis
    [state] => MT
    [street] => Rua Pirajuí
    [zipCode] => 78710857
)
*/

示例 3

使用格式化字符串进行搜索。

<?php

use Claudsonm\CepPromise\CepPromise;

require 'vendor/autoload.php';

$address = CepPromise::fetch('59067-540');
echo $address->zipCode;
echo $address->street;
echo $address->district;
echo $address->city;
echo $address->state;

/*
'59067540'
'Rua Figueira'
'Pitimbu'
'Natal'
'RN'
*/

示例 4

捕获和处理错误。

<?php

use Claudsonm\CepPromise\CepPromise;
use Claudsonm\CepPromise\Exceptions\CepPromiseException;

require 'vendor/autoload.php';

try {
    $response = CepPromise::fetch('99999999');
} catch (CepPromiseException $e) {
    $response = $e->toArray();
}

/*
Array
(
    [message] => Todos os serviços de CEP retornaram erro.
    [code] => 2
    [errors] => Array
        (
            [0] => Array
                (
                    [provider] => via_cep
                    [message] => CEP não encontrado na base do ViaCEP.
                )

            [1] => Array
                (
                    [provider] => cep_aberto
                    [message] => Erro ao se conectar com o serviço CEP Aberto.
                )

            [2] => Array
                (
                    [provider] => correios
                    [message] => CEP INVÁLIDO
                )

        )

)
*/

贡献者

感谢所有为这个存储库做出贡献的各位。

本项目遵循 all-contributors 规范。欢迎各种形式的贡献!