<?php namespace Xentral\Modules\Country\Data; final class CountryData { /** @var string $isoAlpha2 */ private $isoAlpha2; /** @var string $isoAlpha3 */ private $isoAlpha3; /** @var string $isoNumeric */ private $isoNumeric; /** @var string $nameGerman */ private $nameGerman; /** @var string $nameEnglish */ private $nameEnglish; /** @var bool $isEu */ private $isEu; /** * @param string $isoAlpha2 ISO 3166 ALPHA-2 * @param string $isoAlpha3 ISO 3166 ALPHA-3 * @param string $isoNumeric ISO 3166 numeric * @param string $nameGerman German name * @param string $nameEnglish English name * @param bool $isEu */ public function __construct($isoAlpha2, $isoAlpha3, $isoNumeric, $nameGerman, $nameEnglish, $isEu) { $validator = new CountryDataValidator(); $validator->ensureIso2($isoAlpha2); $validator->ensureIso3($isoAlpha3); if ($isoAlpha2 !== 'XK' /* Kosovo has no numeric id */) { $validator->ensureIsoNumeric($isoNumeric); } $validator->ensureNameGerman($nameGerman); $validator->ensureNameEnglish($nameEnglish); $validator->ensureIsEu($isEu); $this->isoAlpha2 = $isoAlpha2; $this->isoAlpha3 = $isoAlpha3; $this->isoNumeric = $isoNumeric; $this->nameGerman = $nameGerman; $this->nameEnglish = $nameEnglish; $this->isEu = $isEu; } /** * @param array $state * * @return CountryData */ public static function fromState(array $state) { return new self( $state['iso2_code'], $state['iso3_code'], $state['num_code'], $state['name_de'], $state['name_en'], (bool)$state['is_eu'] ); } /** * @return string */ public function getIsoAlpha2() { return $this->isoAlpha2; } /** * @return string */ public function getIsoAlpha3() { return $this->isoAlpha3; } /** * @return string */ public function getIsoNumeric() { return $this->isoNumeric; } /** * @return string */ public function getNameGerman() { return $this->nameGerman; } /** * @return string */ public function getNameEnglish() { return $this->nameEnglish; } /** * @return bool */ public function isEu() { return $this->isEu; } }