Overview
  • Namespace
  • Class
  • Tree
  • Todo

Namespaces

  • jp3cki
    • gimei
      • address
      • name

Classes

  • jp3cki\gimei\address\Address
  • jp3cki\gimei\address\AddressUnit
  • jp3cki\gimei\address\Dictionary
  • jp3cki\gimei\address\Factory
  • jp3cki\gimei\DataUnit
  • jp3cki\gimei\Gimei
  • jp3cki\gimei\name\Dictionary
  • jp3cki\gimei\name\Factory
  • jp3cki\gimei\name\Gender
  • jp3cki\gimei\name\NameUnit
  • jp3cki\gimei\name\Person

Exceptions

  • jp3cki\gimei\Exception
  1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30  31  32  33  34  35  36  37  38  39  40  41  42  43  44  45  46  47  48  49  50  51  52  53  54  55  56  57  58  59  60  61  62  63  64  65  66  67  68  69  70  71  72  73  74  75  76  77  78  79  80  81  82  83  84  85  86  87  88  89  90  91  92  93  94  95  96  97  98  99 100 101 102 103 104 105 106 107 108 109 
<?php
/**
 * @author AIZAWA Hina <hina@bouhime.com>
 * @copyright 2015 AIZAWA Hina <hina@bouhime.com>
 * @license https://github.com/fetus-hina/gimei-php/blob/master/LICENSE MIT
 */

namespace jp3cki\gimei\address;

use jp3cki\gimei\Exception;

/**
 * データファイルを読み込み保持するクラス
 *
 * @property-read array prefectures
 * @property-read array cities
 * @property-read array towns
 */
class Dictionary
{
    /**
     * 都道府県のリスト
     * @var string[][]
     */
    private $prefectures;
    
    /**
     * 市区町村のリスト
     * @var string[][]
     */
    private $cities;

    /**
     * 大字等のリスト
     * @var string[][]
     */
    private $towns;

    /**
     * コンストラクタ
     *
     * @param string $jsonPath データファイルのパス
     */
    public function __construct($jsonPath)
    {
        $this->load($jsonPath);
    }

    /**
     * 都道府県をランダムに選択して返す
     *
     * @return string[]
     */
    public function getOneOfPrefecture()
    {
        return $this->prefectures[
            mt_rand(0, count($this->prefectures) - 1)
        ];
    }

    /**
     * 市区町村をランダムに選択して返す
     *
     * @return string[]
     */
    public function getOneOfCity()
    {
        return $this->cities[
            mt_rand(0, count($this->cities) - 1)
        ];
    }

    /**
     * 大字等をランダムに選択して返す
     *
     * @return string[]
     */
    public function getOneOfTown()
    {
        return $this->towns[
            mt_rand(0, count($this->towns) - 1)
        ];
    }

    /**
     * ファイルを読み込む
     *
     * @param string $jsonPath ファイルパス
     */
    private function load($jsonPath)
    {
        if (!file_exists($jsonPath)) {
            throw new Exception('Could not find ' . basename($jsonPath));
        }

        $json = json_decode(file_get_contents($jsonPath), true);
        if (!isset($json['addresses']) ||
                !isset($json['addresses']['prefecture']) ||
                !isset($json['addresses']['city']) ||
                !isset($json['addresses']['town'])) {
            throw new Exception('Broken json: ' . basename($jsonPath));
        }

        $this->prefectures = $json['addresses']['prefecture'];
        $this->cities = $json['addresses']['city'];
        $this->towns = $json['addresses']['town'];
    }
}
API documentation generated by ApiGen