dekiakbar/indonesia-regions-php-client

此包将从https://bps.go.id检索并提取印度尼西亚地区的信息

1.2.1 2021-03-22 16:08 UTC

This package is auto-updated.

Last update: 2024-09-22 23:49:53 UTC


README

Build Status Stable Version Unstable Version StyleCI License

关于印度尼西亚地区PHP客户端

此包可用于从BPS检索省份、城市、区和村庄的数据。注意:在使用此包的任何地方,请指定BPS作为数据源。

目录

先决条件

在安装此包之前,请确保满足以下要求

PHP >= 7.2
ext-json
ext-curl
docker (optional)
docker-compose (optional)

开发(Docker)

对于开发,您可以使用此项目的Docker容器,以下是在本地环境中重现Docker环境的步骤

  • 克隆此仓库:git clone https://github.com/dekiakbar/indonesia-regions-php-client.git
  • 导航到项目目录:cd indonesia-regions-php-client
  • 然后运行:docker-compose up -d
  • 等待几分钟,Docker镜像将自动构建,构建完成后,您将得到一个名为indonesia-regions-php-client_app的镜像和一个名为indonesia-regions-php-client_app_1indonesia-regions-php-client_mysql_1的容器。
  • 检查容器是否已启动,您可以运行:docker ps -a
  • 如果容器未运行,您可以运行:docker start indonesia-regions-php-client_app_1docker start indonesia-regions-php-client_mysql_1
  • 您可以运行交互式shell(SSH):docker exec -it indonesia-regions-php-client_app_1 /bin/bash
  • 注意
    • indonesia-regions-php-client_app_1容器用于挂载项目目录。
    • indonesia-regions-php-client_mysql_1容器用于保存项目数据库。
    • indonesia-regions-php-client_app_1容器的默认Docker工作目录是app
    • app目录是从宿主机的indonesia-regions-php-client目录挂载的,因此如果您在宿主机操作系统中的indonesia-regions-php-client中编辑文件,则Docker中的文件将更改或反之亦然。我让Docker容器将项目根目录(即indonesia-regions-php-client)挂载到app的原因是我太懒了,不想从Docker挂载文件,因此如果从indonesia-regions-php-client根目录挂载文件,我就可以直接从我的IDE中直接编辑文件😝

安装

  • $ composer require dekiakbar/indonesia-regions-php-client
  • 完成。

用法

  • 您可以将参数传递给方法,此包有3种模式
  • 对于BPSPOS模式,您可以使用BPS Id/Code来检索省份/城市/区/村庄数据。但是,如果您使用的是dagri模式,则不能使用BPS Id/Code来检索省份/城市/区/村庄数据,请使用dagri Id/code来检索省份/城市/区/村庄数据。
  • 如果模式为NULL,则方法将使用默认模式,默认模式是bps
  • bps:仅返回省份/城市/区/村庄的kodenama
  • dagri:返回省份/城市/区/村庄的kode_bpsnama_bpskode_dagrinama_dagri
  • pos : 返回值:kode_bpsnama_bpskode_posnama_pos(省份/城市/街道/村庄)。

注意

  • 并非所有方法总是返回listdetail对象,在某些方法中,可能只返回listdetail,您在使用响应之前必须再次检查。.

  • 如果您只需要数据(不打算使用此API),请将数据库转储导入到export文件夹中,解压indonesia_regions_pos.tar.gz并将其导入到您的数据库中。

  • 如果您想以Dagri模式检索数据,请用有效的数据填写Parent Id(省份Id / 城市Id / 街道Id)。POS和Dagri的Parent Id不同。您可以从$region->getCityListByProvinceId('pos',$provinceId)->list中获取城市Id (kode)

  • 请记住,如果您想获取任何数据,您必须使用从list集合中获取的父Id(省份Id / 城市Id / 街道Id),而不是从详细集合中获取(如果您使用详细中的ID,它将起作用,但您将获得重复数据)。

  • 检索所有省份数据

    require_once __DIR__ . '/vendor/autoload.php';
    use Dekiakbar\IndonesiaRegionsPhpClient\Region;
    $region = new Region();
    print_r( $region->getAllProvince('pos') );
    
    // will return something like :
    stdClass Object
    (
        [detail] => Array
            (
                [0] => stdClass Object
                    (
                        [kode_bps] => 11
                        [nama_bps] => ACEH
                        [kode_pos] => 20000
                        [nama_pos] => ACEH
                    )
    
                [1] => stdClass Object
                    (
                        [kode_bps] => 51
                        [nama_bps] => BALI
                        [kode_pos] => 80000
                        [nama_pos] => BALI
                    )
            )
        [list] => Array
            (
                [0] => stdClass Object
                    (
                        [kode] => 11
                        [nama] => ACEH
                    )
    
                [1] => stdClass Object
                    (
                        [kode] => 12
                        [nama] => SUMATERA UTARA
                    )
            )
    )
  • 通过省份Id检索城市列表

    require_once __DIR__ . '/vendor/autoload.php';
    use Dekiakbar\IndonesiaRegionsPhpClient\Region;
    $region = new Region();
    
    // province Id from $region->getAllProvince('bps')
    $provinceId = 32;
    print_r( 
        $region->getCityListByProvinceId('pos',$provinceId) 
    );
    
    // will return something like :
    stdClass Object
    (
        [detail] => Array
            (
                [0] => stdClass Object
                    (
                        [kode_bps] => 3204
                        [nama_bps] => BANDUNG
                        [kode_pos] => 40300
                        [nama_pos] => BANDUNG
                    )
    
                [1] => stdClass Object
                    (
                        [kode_bps] => 3273
                        [nama_bps] => BANDUNG
                        [kode_pos] => 40100
                        [nama_pos] => KOTA BANDUNG
                    )
            )
        [list] => Array
            (
                [0] => stdClass Object
                    (
                        [kode] => 3201
                        [nama] => BOGOR
                    )
    
                [1] => stdClass Object
                    (
                        [kode] => 3202
                        [nama] => SUKABUMI
                    )
            )
    )
  • 通过城市Id检索街道列表

    require_once __DIR__ . '/vendor/autoload.php';
    use Dekiakbar\IndonesiaRegionsPhpClient\Region;
    $region = new Region();
    
    // POS
    // city Id from $region->getCityListByProvinceId('pos',$provinceId)->list
    $cityId = 3273;
    print_r( 
        $region->getSubdistrictListByCityId('pos',$cityId)
    );
    
    // will return something like :
    stdClass Object
    (
        [detail] => Array
            (
                [0] => stdClass Object
                    (
                        [kode_bps] => 3273180
                        [nama_bps] => ANDIR
                        [kode_pos] => 40181
                        [nama_pos] => Andir
                    )
    
                [1] => stdClass Object
                    (
                        [kode_bps] => 3273180
                        [nama_bps] => ANDIR
                        [kode_pos] => 40182
                        [nama_pos] => Andir
                    )
            )
        [list] => Array
            (
                [0] => stdClass Object
                    (
                        [kode] => 3273010
                        [nama] => BANDUNG KULON
                    )
    
                [1] => stdClass Object
                    (
                        [kode] => 3273020
                        [nama] => BABAKAN CIPARAY
                    )
            )
    )
    
    
    
    // Dagri
    // city Id from $region->getCityListByProvinceId('dagri',$provinceId)->list
    $cityId = '32.73';
    print_r(
        $region->getSubdistrictListByCityId('dagri',$cityId)
    );
    
    // will return something like :
    stdClass Object
    (
        [detail] => Array
            (
                [0] => stdClass Object
                    (
                        [kode_bps] => 3273050
                        [nama_bps] => ASTANAANYAR
                        [kode_dagri] => 32.73.10
                        [nama_dagri] => ASTANA ANYAR
                    )
    
                [1] => stdClass Object
                    (
                        [kode_bps] => 3273120
                        [nama_bps] => UJUNG BERUNG
                        [kode_dagri] => 32.73.26
                        [nama_dagri] => UJUNGBERUNG
                    )
            )
        [list] => Array
            (
                [0] => stdClass Object
                    (
                        [kode] => 32.73.01
                        [nama] => Sukasari
                    )
    
                [1] => stdClass Object
                    (
                        [kode] => 32.73.02
                        [nama] => Coblong
                    )
            )
    )
  • 通过街道Id检索村庄列表

    require_once __DIR__ . '/vendor/autoload.php';
    use Dekiakbar\IndonesiaRegionsPhpClient\Region;
    $region = new Region();
    // POS
    // subdistrict Id from $region->getSubdistrictListByCityId('pos',$cityId)->list
    $subdistrictId = 3273010;
    print_r( 
        $region->getVillageListBySubdistrictId('pos',$subdistrictId)
    );
    
    // will return something like :
    stdClass Object
    (
        [detail] => Array
            (
                [0] => stdClass Object
                    (
                        [kode_bps] => 3273010005
                        [nama_bps] => CARINGIN
                        [kode_pos] => 40212
                        [nama_pos] => Caringin
                    )
    
                [1] => stdClass Object
                    (
                        [kode_bps] => 3273010007
                        [nama_bps] => CIBUNTU
                        [kode_pos] => 40212
                        [nama_pos] => Cibuntu
                    )
            )
        [list] => Array
            (
                [0] => stdClass Object
                    (
                        [kode] => 3273010001
                        [nama] => GEMPOL SARI
                    )
    
                [1] => stdClass Object
                    (
                        [kode] => 3273010002
                        [nama] => CIGONDEWAH KALER
                    )
            )
    )
    
    // Dagri
    // subdistrict Id from $region->getSubdistrictListByCityId('dagri',$cityId)->list
    $subdistrictId = '32.73.10';
    print_r( 
        $region->getVillageListBySubdistrictId('dagri',$subdistrictId) 
    );
    
    // will return something like :
    stdClass Object
    (
        [detail] => Array
            (
                [0] => stdClass Object
                    (
                        [kode_bps] => 3273050001
                        [nama_bps] => KARASAK
                        [kode_dagri] => 32.73.10.1001
                        [nama_dagri] => KARASAK
                    )
    
                [1] => stdClass Object
                    (
                        [kode_bps] => 3273050002
                        [nama_bps] => PELINDUNG HEWAN
                        [kode_dagri] => 32.73.10.1006
                        [nama_dagri] => PELINDUNG HEWAN
                    )
            )
    )
  • 检索省份的ISO 3166-2代码

    注意:此方法仅适用于省份

    require_once __DIR__ . '/vendor/autoload.php';
    use Dekiakbar\IndonesiaRegionsPhpClient\Region;
    $region = new Region();
    
    // Province code get from $region->getAllProvince('bps')->list
    $provinceId = 32;
    print_r( 
            $region->getIsoCode($provinceId) 
    );
    
    // will return String, something like :
    ID-JB

许可证

License