| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- <?php
- /*
- * Copyright (c) Alexandre Gomes Gaigalas <alganet@gmail.com>
- * SPDX-License-Identifier: MIT
- */
- declare(strict_types=1);
- namespace Respect\Validation\Helpers;
- use Respect\Validation\Exceptions\ComponentException;
- use function file_exists;
- use function sprintf;
- final class CountryInfo
- {
- /**
- * @var mixed[]
- */
- private $data;
- /**
- * @var mixed[]
- */
- private static $runtimeCache = [];
- public function __construct(string $countryCode)
- {
- if (!isset(static::$runtimeCache[$countryCode])) {
- $filename = __DIR__ . '/../../data/iso_3166-2/' . $countryCode . '.php';
- if (!file_exists($filename)) {
- throw new ComponentException(sprintf('"%s" is not a supported country code', $countryCode));
- }
- static::$runtimeCache[$countryCode] = require $filename;
- }
- $this->data = static::$runtimeCache[$countryCode];
- }
- public function getCountry(): string
- {
- return $this->data['country'];
- }
- /**
- * @return string[]
- */
- public function getSubdivisions(): array
- {
- return $this->data['subdivisions'];
- }
- }
|