定制 dekiakbar/indonesia-regions-php-client 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

dekiakbar/indonesia-regions-php-client

Composer 安装命令:

composer require dekiakbar/indonesia-regions-php-client

包简介

This package will retrieve and extract regions of Indonesia from https://bps.go.id

README 文档

README

Build Status Stable Version Unstable Version StyleCI License

About Indonesia Regions PHP Client

This package can be used to retrieve provinces, cities, districts and villages data from BPS. Note: Wherever you use this package please specify BPS as the data source.

Table of Contents

Prerequisites

Before you install this package, make sure that the requirements below are met

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

Development (Docker)

For development you can use docker container for this project, here are step to reproduce docker env on your local env :

  • Clone this repository: git clone https://github.com/dekiakbar/indonesia-regions-php-client.git
  • Navigate to project directory : cd indonesia-regions-php-client
  • Snd run : docker-compose up -d
  • Wait a few minutes, the image for docker will build automatic, after the build has been done you will get an image with the name indonesia-regions-php-client_app and a container with the name indonesia-regions-php-client_app_1 and indonesia-regions-php-client_mysql_1.
  • Check if the container are exit, you can run : docker ps -a
  • If the container is not running, you can run : docker start indonesia-regions-php-client_app_1 and docker start indonesia-regions-php-client_mysql_1
  • You can run interactive shell (SSH) : docker exec -it indonesia-regions-php-client_app_1 /bin/bash
  • NOTE:
    • The indonesia-regions-php-client_app_1 container is used to mount the directory project.
    • The indonesia-regions-php-client_mysql_1 container is used to save the database from project.
    • The default docker workdir is app for indonesia-regions-php-client_app_1 container.
    • The app directory is mounted from indonesia-regions-php-client host directory, so if you edit the file inside indonesia-regions-php-client in the host Operating system, the file inside docker will be changed or vice versa, the reason I made docker container mount the project root a.k.a indonesia-regions-php-client to the app because I am too lazy to mount file from docker, so if docker mount file from indonesia-regions-php-client root directory I can simple edit the file directly from my favorite IDE 😝

Installation

  • $ composer require dekiakbar/indonesia-regions-php-client
  • And You're done.

Usage

  • You can pass the parameter to the method, All of this package has 3 mode :
  • For BPS and POS mode you can use BPS Id/Code to retrieve province / city / subdistrict / village data. But you Can Not use BPS Id/Code to retrieve province / city / subdistrict / village data if you use dagri mode, please use dagri Id/code to retrieve province / city / subdistrict / village data.
  • If mode is NULL, then the method will use default mode, default mode is bps.
  • bps : only return : kode and nama of province / city / subdistrict / village.
  • dagri : return : kode_bps, nama_bps, kode_dagri, nama_dagri of province / city / subdistrict / village.
  • pos : return : kode_bps, nama_bps, kode_pos, nama_pos of province / city / subdistrict / village.

Note

  • Not all method always return list and detail object, on some method only return list or detail you must check it again before you use the response.

  • If you just need the data (not planing to use this API), just import the Database Dump on export folder, extract indonesia_regions_pos.tar.gz and import to your database.

  • If you want to retrieve data with mode Dagri please fill Parent Id (Provinde Id / City Id / Subdistrict Id) with valid data. Parent Id for POS and Dagri are different. You can get the city Id (kode) from $region->getCityListByProvinceId('pos',$provinceId)->list.

  • please remeber if you want fetch any data you must use parent Id (province Id / City Id / Subdistrict Id) from list collection, NOT from detail collection (If you use ID from detail it will work but you will get duplicate data).

  • Retrieve All province data

    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
                    )
            )
    )
  • Retrieve City List By Province 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
                    )
            )
    )
  • Retrieve Subdistrict List By City 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
                    )
            )
    )
  • Retrieve Village List By Subdistrict 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
                    )
            )
    )
  • Retrieve ISO 3166-2 code for province

    Note : This method only for province

    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

License

dekiakbar/indonesia-regions-php-client 适用场景与选型建议

dekiakbar/indonesia-regions-php-client 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 453 次下载、GitHub Stars 达 6, 最近一次更新时间为 2020 年 07 月 25 日, 在 PHP 生态内属于活跃度较高的组件。

它主要适用于以下技术方向: 「php」 「api」 「region」 「indonesia」 「bps」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。

我们在过去多个企业项目中使用过 dekiakbar/indonesia-regions-php-client 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 dekiakbar/indonesia-regions-php-client 我们能提供哪些服务?
定制开发 / 二次开发

基于 dekiakbar/indonesia-regions-php-client 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 453
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 6
  • 点击次数: 6
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 6
  • Watchers: 1
  • Forks: 10
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2020-07-25