Laravel で使用できます。
ZipCode :: setCountry ( ' US ' );
return Response :: make (
ZipCode :: find ( ' 10006 ' )
);
またはその外側:
$ z = new PragmaRX ZipCode ZipCode ;
return $ z -> find ( ' 20250030 ' )-> toArray ();
JSON に文字列としてアクセスしようとすると、自動的に JSON がレンダリングされますが、次のことも可能です。
$ result = ZipCode :: find ( ' 10006 ' );
$ json = $ result -> toJson ();
$ array = $ result -> toArray ();
ご希望の Web サービスを選択してください:
ZipCode :: setPreferredWebService ( ' Zippopotamus ' );
Web サービスを名前で取得し、内容を変更して、住所/都市を検索します。
$ webService = ZipCode :: getWebServiceByName ( ' Zippopotamus ' );
$ webSerivice -> setUrl ( ' http://api.zippopotam.ca ' );
return ZipCode :: find ( ' 20250030 ' , $ webService );
新しい Web サービスを作成し、リストに追加します。
$ webService = new PragmaRX ZipCode Support WebService ;
$ webSerivice -> setUrl ( ' http://api.zippopotam.ca ' );
$ webSerivice -> setQuery ( ' /%country%/%zip_code% ' );
ZipCode :: addWebService ( $ webService );
Guzzle が Web サービスへのアクセスに使用するユーザー エージェントを変更します。
ZipCode :: setUserAgent ( ' Googlebot/2.1 (+http://www.google.com/bot.html) ' );
zip を見つけるのにどれくらい時間がかかりましたか?:
$ result = ZipCode :: find ( ' 0200 ' );
echo $ result -> getTimer ();
利用可能なすべての国のリストを取得します。
$ array = ZipCode :: getAvailableCountries ();
クエリ パラメーターを動的に変更するため、Geonames ログインがある場合は、次のようにして設定できます。
ZipCode :: setQueryParameter ( ' geonames_username ' , ' yourusername ' );
このパッケージは、世界中の Web サービスを使用して、住所と都市の情報を提供します。すべての国で利用できる Web サービスが少なくとも 2 つあり (ブラジルには現在 6 つ)、ZipCode が 1 つにアクセスできない場合、または zip が見つからない場合は、自動的に他の Web サービスに戻ります。これらより優れている可能性のある他の Web サービスをご存知の場合は、問題を作成するか PR してください。
これは、Zip を検索したときに得られる結果の例です。
{
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 はPragmaRXZipCodeSupportResult
オブジェクトを返し、すべてのプロパティにアクセスできます。
$ result -> getWebService ();
$ result -> getCountryName ();
これは型破りにハッキングされた Laravel ルーターで、選択した国の郵便番号をクエリするフォームをレンダリングします。
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> ' ;
}
});
次の国でテストされた Web サービスがあります。
別のものが必要な場合は、問い合わせるか、プルリクエストを一緒に送信してください。
Composer を使用してインストールします。
composer require "pragmarx/zipcode"
app/config/app.php を編集し、サービス プロバイダーを追加します。
'PragmaRXZipCodeVendorLaravelServiceProvider',
そしてファサード
'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');
}
}
これは本当に素晴らしいサービスなので、最初のオプションとして使用する必要がありますが、無料 (1 日あたり 30,000 クレジット) にするには、ユーザー アカウントを作成し、無料の Web サービスを有効にする必要があります。そして、ユーザー名を使用するように ZipCode を設定します。
ZipCode::setCountry('GB');
ZipCode::setQueryParameter('geonames_username', 'yourusername');
ZipCode::find('L23YL');
また、config.php を使用して設定することもできます。
return array(
...
'query_parameters' => array(
'geonames_username' => 'demo',
)
);
アントニオ・カルロス・リベイロ
ZipCode は BSD 3 条項ライセンスに基づいてライセンスされています - 詳細についてはLICENSE
ファイルを参照してください。
プルリクエストや問題は大歓迎です。