Sie können es in Laravel verwenden:
ZipCode :: setCountry ( ' US ' );
return Response :: make (
ZipCode :: find ( ' 10006 ' )
);
Oder außerhalb davon:
$ z = new PragmaRX ZipCode ZipCode ;
return $ z -> find ( ' 20250030 ' )-> toArray ();
Es rendert automatisch ein JSON, wenn Sie versuchen, als String darauf zuzugreifen, aber Sie können trotzdem:
$ result = ZipCode :: find ( ' 10006 ' );
$ json = $ result -> toJson ();
$ array = $ result -> toArray ();
Wählen Sie Ihren bevorzugten Webservice:
ZipCode :: setPreferredWebService ( ' Zippopotamus ' );
Holen Sie sich einen Webdienst mit Namen, ändern Sie Dinge darin und finden Sie damit eine Adresse/Stadt:
$ webService = ZipCode :: getWebServiceByName ( ' Zippopotamus ' );
$ webSerivice -> setUrl ( ' http://api.zippopotam.ca ' );
return ZipCode :: find ( ' 20250030 ' , $ webService );
Erstellen Sie einen neuen Webdienst und fügen Sie ihn der Liste hinzu:
$ webService = new PragmaRX ZipCode Support WebService ;
$ webSerivice -> setUrl ( ' http://api.zippopotam.ca ' );
$ webSerivice -> setQuery ( ' /%country%/%zip_code% ' );
ZipCode :: addWebService ( $ webService );
Ändern Sie den Benutzeragenten, den Guzzle für den Zugriff auf den Webdienst verwendet:
ZipCode :: setUserAgent ( ' Googlebot/2.1 (+http://www.google.com/bot.html) ' );
Wie lange hat es gedauert, eine Postleitzahl zu finden?:
$ result = ZipCode :: find ( ' 0200 ' );
echo $ result -> getTimer ();
Holen Sie sich eine Liste aller verfügbaren Länder:
$ array = ZipCode :: getAvailableCountries ();
Ändern Sie Abfrageparameter dynamisch. Wenn Sie also über ein Geonames-Login verfügen, können Sie es wie folgt festlegen:
ZipCode :: setQueryParameter ( ' geonames_username ' , ' yourusername ' );
Dieses Paket nutzt Webdienste auf der ganzen Welt, um Adressen und Städteinformationen bereitzustellen. Es stehen mindestens zwei Webdienste für alle Länder zur Verfügung (Brasilien verfügt derzeit über sechs). Wenn ZipCode nicht auf einen zugreifen kann oder keine Postleitzahl darauf findet, greift er automatisch auf die anderen zurück. Wenn Sie andere verfügbare Webdienste kennen, die besser sein könnten, erstellen Sie bitte ein Problem oder eine PR damit.
Dies ist ein Beispiel dafür, was Sie erhalten, wenn Sie damit eine Postleitzahl durchsuchen:
{
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 gibt ein PragmaRXZipCodeSupportResult
Objekt zurück und auf alle Eigenschaften kann zugegriffen werden:
$ result -> getWebService ();
$ result -> getCountryName ();
Dies ist ein unkonventionell gehackter Laravel-Router, der ein Formular zur Abfrage von Postleitzahlen in einem ausgewählten Land rendert:
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> ' ;
}
});
Für folgende Länder gibt es getestete Webdienste:
Wenn Sie ein anderes benötigen, fragen Sie bitte nach oder senden Sie einfach eine Pull-Anfrage mit.
Installieren Sie es mit Composer:
composer require "pragmarx/zipcode"
Bearbeiten Sie Ihre app/config/app.php und fügen Sie den Dienstanbieter hinzu
'PragmaRXZipCodeVendorLaravelServiceProvider',
Und die Fassade
'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');
}
}
Dies ist ein wirklich netter Service und Sie sollten ihn als erste Option nutzen. Damit er jedoch kostenlos ist (für 30.000 Credits/Tag), müssen Sie ein Benutzerkonto erstellen und die kostenlosen Webservices aktivieren. Und konfigurieren Sie ZipCode so, dass es Ihren Benutzernamen verwendet:
ZipCode::setCountry('GB');
ZipCode::setQueryParameter('geonames_username', 'yourusername');
ZipCode::find('L23YL');
Und Sie können es auch mit config.php einstellen:
return array(
...
'query_parameters' => array(
'geonames_username' => 'demo',
)
);
Antonio Carlos Ribeiro
ZipCode ist unter der BSD 3-Clause-Lizenz lizenziert – Einzelheiten finden Sie in der LICENSE
Datei
Pull-Requests und Issues sind mehr als willkommen.