jabarihunt/country-codes

一个简单的类,用于返回国家代码(或国家名称)。

v1.0.4 2020-01-06 05:28 UTC

This package is auto-updated.

Last update: 2024-09-06 16:41:18 UTC


README

这是一个用于获取国家代码和/或名称的简单类。通常这将是存储在数据库中并从数据库中访问的数据。然而,在以下情况下,这个类将非常有用...

  1. 在无法访问数据库的地方运行您的应用程序
  2. 没有权限向数据库添加表
  3. 除了国家的表之外,您的应用程序不需要数据库

需要PHP 7.0+由于类型定义

安装

通过Composer

在您的composer.json文件相同的目录下运行以下命令

composer require jabarihunt/country-codes

通过Github

  1. 将此存储库克隆到工作目录:git clone git@github.com:jabarihunt/country-codes .

  2. 在您的项目中包含CountryCodes类...

require('/path/to/CountryCodes.php')

...或者如果使用自动加载...

 use jabarihunt/CountryCodes;

用法

可用方法

在类中公开了两个静态方法...

  • get( int $codeType, string $code, bool $useAPI = FALSE ) 此函数接受一个代码类型(作为类常量提供)和一个相应的值。该函数返回一个包含国家名称、2位国家代码、3位国家代码和联合国国家代码的数组。

  • getAll( bool $useAPI = FALSE ) 返回一个多维数组,包含所有国家的国家名称、2位国家代码、3位国家代码和联合国国家代码。

注意: 国家数据硬编码到类中的数组中。但是,可选参数($useAPI)将生成一个HTTP请求到REST Countries API以获取实时数据。国家变化很少见,但确实会发生!

此外,还有五个公开的常量,代表类数据类型

public const CountryCodes::CODE_TYPE_COUNTRY_NAME
public const CountryCodes::CODE_TYPE_NATIVE_NAME
public const CountryCodes::CODE_TYPE_2_LETTER
public const CountryCodes::CODE_TYPE_3_LETTER
public const CountryCodes::CODE_TYPE_UN

获取单个国家的数据

假设我们有一个国家名称,例如海地,我们想要3位国家代码。我们将使用get()方法,传递给它值的类型(在这种情况下是国家名称)以及值本身。

<?php

    $countryName     = 'Haiti';
    $countryCodeType = CountryCodes::CODE_TYPE_COUNTRY_NAME;
    $countryCodes    = CountryCodes::get($countryCodeType, $countryName);
    
    var_dump($countryCodes);

?>
/* OUTPUT */

array(5) {
    ["name"]=> string(5) "Haiti"
    ["nativeName"]=> string(6) "Haïti"
    ["2letter"]=> string(2) "HT"
    ["3letter"]=> string(3) "HTI"
    ["un"]=> string(3) "332"
}

如你所见,此方法返回一个包含国家官方名称、本地名称(在其本地语言中)、2位国家代码、3位国家代码和联合国数字代码的数组。无论来源是硬编码的类数据还是从REST Countries API的HTTP请求,都会是这样。以下会返回完全相同的输出(注意使用了第三个可选参数

CountryCodes::get($countryCodeType, $countryName, TRUE)

注意: 承认的国家名称与REST Countries API中的名称完全相同。大多数都像上面例子中的"海地"一样直接。但是,有些不那么明显,例如"委内瑞拉(玻利瓦尔共和国)"而不是仅仅"委内瑞拉"!

如果碰巧有一个国家代码并希望接收国家名称(或类中的其他数据点),则可以使用该类作为反向查找。以下示例会返回与上面完全相同的输出

<?php

    $unitedNationsCode = '332';
    $countryCodeType   = CountryCodes::CODE_TYPE_UN;
    $countryCodes      = CountryCodes::get($countryCodeType, $unitedNationsCode);

?>

获取所有国家

可能存在您需要检索所有国家代码的情况。以下示例将返回一个具有与上面示例相同键的多维数组的国家代码。

<?php

    // RETURN HARD CODED CLASS VALUES
    $allCountryCodes = CountryCodes::getAll(); 
    
    /* OR */

    // RETURN DATA VIA HTTP REQUEST TO THE REST COUNTRIES API 
    $allCountryCodes = CountryCodes::getAll(TRUE);
    
?>

贡献

  1. 分叉仓库
  2. 创建一个描述性的分支名称
  3. 对您的分支进行编辑
  4. 合并(变基)您的提交
  5. 创建拉取请求

许可证

本项目采用MIT许可证 - 有关详细信息,请参阅LICENSE.md文件。