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 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 
<?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;

/**
 * 住所を保持するクラス
 *
 * @property-read AddressUnit prefecture 都道府県
 * @property-read AddressUnit city 市区町村
 * @property-read AddressUnit town 大字等
 */
class Address
{
    /**
     * 都道府県
     * @var AddressUnit
     */
    private $prefecture;

    /**
     * 市区町村
     * @var AddressUnit
     */
    private $city;

    /**
     * 大字等
     * @var AddressUnit
     */
    private $town;

    /**
     * コンストラクタ
     *
     * @param AddressUnit $prefecture 都道府県
     * @param AddressUnit $city 市区町村
     * @param AddressUnit $town 大字等
     */
    public function __construct(AddressUnit $prefecture, AddressUnit $city, AddressUnit $town)
    {
        $this->prefecture = $prefecture;
        $this->city = $city;
        $this->town = $town;
    }

    /**
     * 漢字表記を取得
     *
     * @return string
     */
    public function getKanji()
    {
        return $this->toString('kanji');
    }

    /**
     * かな表記を取得
     *
     * @return string
     */
    public function getHiragana()
    {
        return $this->toString('hiragana');
    }

    /**
     * カナ表記を取得
     *
     * @return string
     */
    public function getKatakana()
    {
        return $this->toString('katakana');
    }

    /**
     * 都道府県を取得
     *
     * @return AddressUnit
     */
    public function getPrefecture()
    {
        return $this->prefecture;
    }

    /**
     * 市区町村を取得
     *
     * @return AddressUnit
     */
    public function getCity()
    {
        return $this->city;
    }

    /**
     * 大字等を取得
     *
     * @return AddressUnit
     */
    public function getTown()
    {
        return $this->town;
    }

    /**
     * @inherit
     * @return string
     */
    public function __toString()
    {
        return $this->getKanji();
    }

    /**
     * @inherit
     * @param string $key
     * @return string|null
     */
    public function __get($key)
    {
        switch ($key) {
            case 'kanji':
                return $this->getKanji();

            case 'hiragana':
                return $this->getHiragana();

            case 'katakana':
                return $this->getKatakana();

            case 'prefecture':
                return $this->getPrefecture();

            case 'city':
                return $this->getCity();

            case 'town':
                return $this->getTown();
        }
    }

    /**
     * 完全な住所を取得
     *
     * @param string $key "kanji" | "hiragana" | "katakana"
     * @return string
     */
    private function toString($key)
    {
        return sprintf(
            '%s%s%s',
            $this->prefecture->$key,
            $this->city->$key,
            $this->town->$key
        );
    }
}
API documentation generated by ApiGen