你可以在 Laravel 中使用它:
ZipCode :: setCountry ( ' US ' );
return Response :: make (
ZipCode :: find ( ' 10006 ' )
);
或在它之外:
$ z = new PragmaRX ZipCode ZipCode ;
return $ z -> find ( ' 20250030 ' )-> toArray ();
如果您嘗試將其作為字串訪問,它會自動呈現 JSON,但您仍然可以:
$ result = ZipCode :: find ( ' 10006 ' );
$ json = $ result -> toJson ();
$ array = $ result -> toArray ();
選擇您首選的網路服務:
ZipCode :: setPreferredWebService ( ' Zippopotamus ' );
按名稱取得網路服務,變更其內容並尋找位址/城市:
$ 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) ' );
找到郵遞區號需要多久時間?
$ result = ZipCode :: find ( ' 0200 ' );
echo $ result -> getTimer ();
取得所有可用國家/地區的清單:
$ array = ZipCode :: getAvailableCountries ();
動態變更查詢參數,因此如果您有 Geonames 登入名,則可以執行下列操作來設定:
ZipCode :: setQueryParameter ( ' geonames_username ' , ' yourusername ' );
該軟體包使用世界各地的網路服務來提供地址和城市資訊。所有國家/地區至少有 2 個可用的 Web 服務(巴西目前有 6 個),如果 ZipCode 無法存取其中一個或在其中找不到 zip,它會自動回退到其他服務。如果您知道任何其他可用的 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> ' ;
}
});
已針對以下國家測試了網路服務:
如果您需要不同的,請詢問或僅發送拉取請求。
使用 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');
}
}
這是一項非常好的服務,您應該將其作為您的首選,但要使其免費(每天 30,000 個積分),您必須建立用戶帳戶並啟用免費的網路服務。並配置 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-Clause License 獲得許可 - 有關詳細信息,請參閱LICENSE
文件
拉取請求和問題非常受歡迎。