* 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']; } }