Você pode usá-lo no Laravel:
ZipCode :: setCountry ( ' US ' );
return Response :: make (
ZipCode :: find ( ' 10006 ' )
);
Ou fora dele:
$ z = new PragmaRX ZipCode ZipCode ;
return $ z -> find ( ' 20250030 ' )-> toArray ();
Ele renderiza automaticamente um JSON se você tentar acessá-lo como string, mas ainda poderá:
$ result = ZipCode :: find ( ' 10006 ' );
$ json = $ result -> toJson ();
$ array = $ result -> toArray ();
Selecione seu serviço web preferido:
ZipCode :: setPreferredWebService ( ' Zippopotamus ' );
Obtenha um serviço web pelo nome, altere as coisas nele e encontre um endereço/cidade com ele:
$ webService = ZipCode :: getWebServiceByName ( ' Zippopotamus ' );
$ webSerivice -> setUrl ( ' http://api.zippopotam.ca ' );
return ZipCode :: find ( ' 20250030 ' , $ webService );
Crie um novo serviço web e adicione-o à lista:
$ webService = new PragmaRX ZipCode Support WebService ;
$ webSerivice -> setUrl ( ' http://api.zippopotam.ca ' );
$ webSerivice -> setQuery ( ' /%country%/%zip_code% ' );
ZipCode :: addWebService ( $ webService );
Altere o agente de usuário que o Guzzle usará para acessar o serviço web:
ZipCode :: setUserAgent ( ' Googlebot/2.1 (+http://www.google.com/bot.html) ' );
Quanto tempo demorou para encontrar um zip?:
$ result = ZipCode :: find ( ' 0200 ' );
echo $ result -> getTimer ();
Obtenha uma lista de todos os países disponíveis:
$ array = ZipCode :: getAvailableCountries ();
Altere dinamicamente os parâmetros de consulta, portanto, se você tiver um login Geonames, poderá configurá-lo fazendo:
ZipCode :: setQueryParameter ( ' geonames_username ' , ' yourusername ' );
Este pacote utiliza serviços web em todo o mundo para fornecer informações sobre endereços e cidades. Existem pelo menos 2 serviços web disponíveis para todos os países (o Brasil atualmente tem 6), se o ZipCode não conseguir acessar um ou não encontrar um zip nele, ele automaticamente volta para os demais. Se você souber de algum outro serviço da web disponível que possa ser melhor do que esses, crie um problema ou PR com ele.
Este é um exemplo do que você obtém ao pesquisar um Zip com ele:
{
country_id : "CH" ,
country_name : "Switzerland" ,
zip_code : "1005" ,
web_service : "Geonames" ,
timer : "0.7808" ,
service_query_url : "http://api.geonames.org/postalCodeSearch?country=CH&postalcode=1005&username=demo" ,
addresses : [
{
postal_code : "1005" ,
state_name : "Canton de Vaud" ,
state_id : "VD" ,
city : "Lausanne" ,
latitude : "46.51985" ,
longitude : "6.64252" ,
department : "District de Lausanne" ,
department_id : "2225" ,
district : "Lausanne"
}
] ,
result_raw : {
totalResultsCount : "1" ,
code : {
postalcode : "1005" ,
name : "Lausanne" ,
countryCode : "CH" ,
lat : "46.51985" ,
lng : "6.64252" ,
adminCode1 : "VD" ,
adminName1 : "Canton de Vaud" ,
adminCode2 : "2225" ,
adminName2 : "District de Lausanne" ,
adminCode3 : "5586" ,
adminName3 : "Lausanne"
}
} ,
success : true
}
ZipCode retorna um objeto PragmaRXZipCodeSupportResult
e todas as propriedades podem ser acessadas:
$ result -> getWebService ();
$ result -> getCountryName ();
Este é um roteador Laravel hackeado de forma não convencional que renderiza um formulário para consultar zips em um país selecionado:
Route :: any ( ' zipcode ' , function () {
echo
Form :: open ( array ( ' url ' => ' zipcode ' )) .
Form :: select ( ' country ' , ZipCode :: getAvailableCountries (), Input :: get ( ' country ' )) .
Form :: text ( ' zipcode ' , Input :: get ( ' zipcode ' )) .
Form :: submit ( ' go! ' ) .
Form :: close ();
if ( Input :: get ( ' country ' ))
{
ZipCode :: setCountry ( Input :: get ( ' country ' ));
ZipCode :: setQueryParameter ( ' geonames_username ' , ' demo ' );
echo ' <pre> ' ;
var_dump ( ZipCode :: find ( Input :: get ( ' zipcode ' ))-> toArray ());
echo ' </pre> ' ;
}
});
Existem serviços web testados para os seguintes países:
Se você precisar de um diferente, pergunte ou apenas envie uma solicitação pull com ele.
Instale-o usando o Composer:
composer require "pragmarx/zipcode"
Edite seu app/config/app.php e adicione o provedor de serviços
'PragmaRXZipCodeVendorLaravelServiceProvider',
E a fachada
'ZipCode' => 'PragmaRXZipCodeVendorLaravelFacade',
use PragmaRXZipCodeZipCode;
$zipcode = new ZipCode();
return $zipcode->generateSecretKey()
$zipcode = app()->make('PragmaRXZipCodeContractsZipCode');
return $zipcode->find('20250-030')
use PragmaRXZipCodeContractsZipCode;
class WelcomeController extends Controller {
public function generateKey(ZipCode $zipcode)
{
return $zipcode->find('20250-030');
}
}
Este é um serviço muito bom e você deve usá-lo como primeira opção, mas para que seja gratuito (por 30.000 créditos/dia) você tem que criar uma conta de usuário e habilitar os webservices gratuitos. E configure o ZipCode para usar seu nome de usuário:
ZipCode::setCountry('GB');
ZipCode::setQueryParameter('geonames_username', 'yourusername');
ZipCode::find('L23YL');
E você também pode usar config.php para configurá-lo:
return array(
...
'query_parameters' => array(
'geonames_username' => 'demo',
)
);
Antonio Carlos Ribeiro
ZipCode é licenciado sob a licença BSD de 3 cláusulas - consulte o arquivo LICENSE
para obter detalhes
Solicitações pull e problemas são mais que bem-vindos.