claudsonm / cep-promise-php
使用 Promises 在 Correios、ViaCEP、CepAberto 等服务中搜索 CEP。
v1.2.0
2022-10-09 11:50 UTC
Requires
- php: ^7.4 | ^8.0
- ext-json: *
- ext-simplexml: *
- guzzlehttp/guzzle: ~7.2
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.11
- phpunit/phpunit: ^9.0
- symfony/var-dumper: ^4.2
This package is auto-updated.
Last update: 2024-09-05 13:21:56 UTC
README
这是一个针对 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 规范。欢迎各种形式的贡献!