protected function __construct(MetadataSourceInterface $metadataSource, $countryCallingCodeToRegionCodeMap)
{
$this->metadataSource = $metadataSource;
$this->countryCallingCodeToRegionCodeMap = $countryCallingCodeToRegionCodeMap;
$this->init();
static::initCapturingExtnDigits();
static::initExtnPatterns();
static::initExtnPattern();
static::$PLUS_CHARS_PATTERN = "[" . static::PLUS_CHARS . "]+";
static::$SEPARATOR_PATTERN = "[" . static::VALID_PUNCTUATION . "]+";
static::$CAPTURING_DIGIT_PATTERN = "(" . static::DIGITS . ")";
static::initValidStartCharPattern();
static::initAlphaPhoneMappings();
static::initDiallableCharMappings();
static::$ALL_PLUS_NUMBER_GROUPING_SYMBOLS = array();
// Put (lower letter -> upper letter) and (upper letter -> upper letter) mappings.
foreach (static::$ALPHA_MAPPINGS as $c => $value) {
static::$ALL_PLUS_NUMBER_GROUPING_SYMBOLS[strtolower($c)] = $c;
static::$ALL_PLUS_NUMBER_GROUPING_SYMBOLS[$c] = $c;
}
static::$ALL_PLUS_NUMBER_GROUPING_SYMBOLS += static::$asciiDigitMappings;
static::$ALL_PLUS_NUMBER_GROUPING_SYMBOLS["-"] = '-';
static::$ALL_PLUS_NUMBER_GROUPING_SYMBOLS["-"] = '-';
static::$ALL_PLUS_NUMBER_GROUPING_SYMBOLS["‐"] = '-';
static::$ALL_PLUS_NUMBER_GROUPING_SYMBOLS["‑"] = '-';
static::$ALL_PLUS_NUMBER_GROUPING_SYMBOLS["‒"] = '-';
static::$ALL_PLUS_NUMBER_GROUPING_SYMBOLS["–"] = '-';
static::$ALL_PLUS_NUMBER_GROUPING_SYMBOLS["—"] = '-';
static::$ALL_PLUS_NUMBER_GROUPING_SYMBOLS["―"] = '-';
static::$ALL_PLUS_NUMBER_GROUPING_SYMBOLS["−"] = '-';
static::$ALL_PLUS_NUMBER_GROUPING_SYMBOLS["/"] = "/";
static::$ALL_PLUS_NUMBER_GROUPING_SYMBOLS["/"] = "/";
static::$ALL_PLUS_NUMBER_GROUPING_SYMBOLS[" "] = " ";
static::$ALL_PLUS_NUMBER_GROUPING_SYMBOLS[" "] = " ";
static::$ALL_PLUS_NUMBER_GROUPING_SYMBOLS[""] = " ";
static::$ALL_PLUS_NUMBER_GROUPING_SYMBOLS["."] = ".";
static::$ALL_PLUS_NUMBER_GROUPING_SYMBOLS["."] = ".";
static::$MIN_LENGTH_PHONE_NUMBER_PATTERN = "[" . static::DIGITS . "]{" . static::MIN_LENGTH_FOR_NSN . "}";
static::$VALID_PHONE_NUMBER = "[" . static::PLUS_CHARS . "]*(?:[" . static::VALID_PUNCTUATION . static::STAR_SIGN . "]*[" . static::DIGITS . "]){3,}[" . static::VALID_PUNCTUATION . static::STAR_SIGN . static::VALID_ALPHA . static::DIGITS . "]*";
static::$VALID_PHONE_NUMBER_PATTERN = "%^" . static::$MIN_LENGTH_PHONE_NUMBER_PATTERN . "\$|^" . static::$VALID_PHONE_NUMBER . "(?:" . static::$EXTN_PATTERNS_FOR_PARSING . ")?\$%" . static::REGEX_FLAGS;
static::$UNWANTED_END_CHAR_PATTERN = "[^" . static::DIGITS . static::VALID_ALPHA . "#]+\$";
static::initMobileTokenMappings();
static::$GEO_MOBILE_COUNTRIES_WITHOUT_MOBILE_AREA_CODES = array();
static::$GEO_MOBILE_COUNTRIES_WITHOUT_MOBILE_AREA_CODES[] = 86;
// China
static::$GEO_MOBILE_COUNTRIES = array();
static::$GEO_MOBILE_COUNTRIES[] = 52;
// Mexico
static::$GEO_MOBILE_COUNTRIES[] = 54;
// Argentina
static::$GEO_MOBILE_COUNTRIES[] = 55;
// Brazil
static::$GEO_MOBILE_COUNTRIES[] = 62;
// Indonesia: some prefixes only (fixed CMDA wireless)
static::$GEO_MOBILE_COUNTRIES = array_merge(static::$GEO_MOBILE_COUNTRIES, static::$GEO_MOBILE_COUNTRIES_WITHOUT_MOBILE_AREA_CODES);
}