1. Go to this page and download the library: Download kamoca/laravel-cep-package library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
use Kamoca\Cep\CepResolver;
class EnderecoController extends Controller
{
public function __construct(private CepResolver $cep) {}
public function show(string $cep)
{
$resultado = $this->cep->resolve($cep)->toArray();
return response()->json($resultado);
}
}
use Kamoca\Cep\Facade\Cep;
$resultado = Cep::resolve('95914-100')->toArray();
use Kamoca\Cep\Exceptions\CepResolutionException;
try {
$resultado = Cep::resolve('00000000')->toArray();
} catch (CepResolutionException $e) {
// CEP não encontrado ou todos os provedores falharam
return response()->json(['error' => 'CEP não encontrado'], 404);
}
use Kamoca\Cep\Contracts\CepContract;
use Kamoca\Cep\Normalizers\CepNormalize;
class MeuCep implements CepContract
{
public function __construct(
public readonly string $cep,
public readonly string $cidade,
public readonly string $estado,
) {}
public static function fromNormalizer(CepNormalize $payload): static
{
return new static(
cep: $payload->cep,
cidade: $payload->city,
estado: $payload->state,
);
}
public function toArray(): array
{
return [
'cep' => $this->cep,
'cidade' => $this->cidade,
'estado' => $this->estado,
];
}
public function jsonSerialize(): array
{
return $this->toArray();
}
}
'cep_class' => App\Cep\MeuCep::class,
use GuzzleHttp\Psr7\Request;
use Kamoca\Cep\Normalizers\CepNormalize;
use Kamoca\Cep\Providers\BaseCepProvider;
class MinhaApiProvider extends BaseCepProvider
{
public function buildRequest(string $cep): Request
{
return new Request('GET', "https://minha-api.com/cep/{$cep}");
}
protected function normalize(array $payload): CepNormalize
{
return new CepNormalize(
cep: $payload['codigo'] ?? '',
street: $payload['logradouro'] ?? '',
neighborhood: $payload['bairro'] ?? '',
city: $payload['municipio'] ?? '',
state: $payload['uf'] ?? '',
provider: $this->getName(),
);
}
}