<?php namespace Faker\Provider\ms_MY; class PhoneNumber extends \Faker\Provider\PhoneNumber { protected static $formats = array( '{{mobileNumber}}', '{{fixedLineNumber}}', '{{voipNumber}}' ); protected static $plusSymbol = array( '+' ); protected static $countryCodePrefix = array( '6' ); /** * @link https://en.wikipedia.org/wiki/Telephone_numbers_in_Malaysia#Mobile_phone_codes_and_IP_telephony */ protected static $zeroOneOnePrefix = array('10','11','12','13','14','15','16','17','18','19','20','22','23','32'); protected static $zeroOneFourPrefix = array('2','3','4','5','6','7','8','9'); protected static $zeroOneFivePrefix = array('1','2','3','4','5','6','9'); /** * @link https://en.wikipedia.org/wiki/Telephone_numbers_in_Malaysia#Mobile_phone_codes_and_IP_telephony */ protected static $mobileNumberFormatsWithFormatting = array( '010-### ####', '011-{{zeroOneOnePrefix}}## ####', '012-### ####', '013-### ####', '014-{{zeroOneFourPrefix}}## ####', '016-### ####', '017-### ####', '018-### ####', '019-### ####', ); protected static $mobileNumberFormats = array( '010#######', '011{{zeroOneOnePrefix}}######', '012#######', '013#######', '014{{zeroOneFourPrefix}}######', '016#######', '017#######', '018#######', '019#######', ); /** * @link https://en.wikipedia.org/wiki/Telephone_numbers_in_Malaysia#Geographic_area_codes */ protected static $fixedLineNumberFormatsWithFormatting = array( '03-#### ####', '04-### ####', '05-### ####', '06-### ####', '07-### ####', '08#-## ####', '09-### ####', ); protected static $fixedLineNumberFormats = array( '03########', '04#######', '05#######', '06#######', '07#######', '08#######', '09#######', ); /** * @link https://en.wikipedia.org/wiki/Telephone_numbers_in_Malaysia#Mobile_phone_codes_and_IP_telephony */ protected static $voipNumberWithFormatting = array( '015-{{zeroOneFivePrefix}}## ####' ); protected static $voipNumber = array( '015{{zeroOneFivePrefix}}######' ); /** * Return a Malaysian Mobile Phone Number. * * @example '+6012-345-6789' * * @param bool $countryCodePrefix true, false * @param bool $formatting true, false * * @return string */ public function mobileNumber($countryCodePrefix = true, $formatting = true) { if ($formatting) { $format = static::randomElement(static::$mobileNumberFormatsWithFormatting); } else { $format = static::randomElement(static::$mobileNumberFormats); } if ($countryCodePrefix) { return static::countryCodePrefix($formatting) . static::numerify($this->generator->parse($format)); } else { return static::numerify($this->generator->parse($format)); } } /** * Return prefix digits for 011 numbers * * @example '10' * * @return string */ public static function zeroOneOnePrefix() { return static::numerify(static::randomElement(static::$zeroOneOnePrefix)); } /** * Return prefix digits for 014 numbers * * @example '2' * * @return string */ public static function zeroOneFourPrefix() { return static::numerify(static::randomElement(static::$zeroOneFourPrefix)); } /** * Return prefix digits for 015 numbers * * @example '1' * * @return string */ public static function zeroOneFivePrefix() { return static::numerify(static::randomElement(static::$zeroOneFivePrefix)); } /** * Return a Malaysian Fixed Line Phone Number. * * @example '+603-4567-8912' * * @param bool $countryCodePrefix true, false * @param bool $formatting true, false * * @return string */ public function fixedLineNumber($countryCodePrefix = true, $formatting = true) { if ($formatting) { $format = static::randomElement(static::$fixedLineNumberFormatsWithFormatting); } else { $format = static::randomElement(static::$fixedLineNumberFormats); } if ($countryCodePrefix) { return static::countryCodePrefix($formatting) . static::numerify($this->generator->parse($format)); } else { return static::numerify($this->generator->parse($format)); } } /** * Return a Malaysian VoIP Phone Number. * * @example '+6015-678-9234' * * @param bool $countryCodePrefix true, false * @param bool $formatting true, false * * @return string */ public function voipNumber($countryCodePrefix = true, $formatting = true) { if ($formatting) { $format = static::randomElement(static::$voipNumberWithFormatting); } else { $format = static::randomElement(static::$voipNumber); } if ($countryCodePrefix) { return static::countryCodePrefix($formatting) . static::numerify($this->generator->parse($format)); } else { return static::numerify($this->generator->parse($format)); } } /** * Return a Malaysian Country Code Prefix. * * @example '+6' * * @param bool $formatting true, false * * @return string */ public static function countryCodePrefix($formatting = true) { if ($formatting) { return static::randomElement(static::$plusSymbol) . static::randomElement(static::$countryCodePrefix); } else { return static::randomElement(static::$countryCodePrefix); } } }