Address.php
5 years ago
Company.php
5 years ago
Internet.php
5 years ago
Payment.php
5 years ago
Person.php
5 years ago
PhoneNumber.php
5 years ago
check_digit.php
5 years ago
PhoneNumber.php
138 lines
| 1 | <?php |
| 2 | |
| 3 | namespace Faker\Provider\pt_BR; |
| 4 | |
| 5 | class PhoneNumber extends \Faker\Provider\PhoneNumber |
| 6 | { |
| 7 | protected static $landlineFormats = array('2###-####', '3###-####', '4###-####'); |
| 8 | |
| 9 | /** |
| 10 | * Since december 2016 all mobile phone numbers in brazil begin with 9 and landlines 2, 3 or 4. |
| 11 | * @link http://www.anatel.gov.br/Portal/exibirPortalPaginaEspecial.do?org.apache.struts.taglib.html.TOKEN=9594e1d11fbc996d52bda44e608bb744&codItemCanal=1794&pastaSelecionada=2984 |
| 12 | */ |
| 13 | protected static $cellphoneFormats = array('9####-####'); |
| 14 | |
| 15 | /** |
| 16 | * Generates a 2-digit area code not composed by zeroes. |
| 17 | * @link http://www.anatel.gov.br/legislacao/resolucoes/16-2001/383-resolucao-263. |
| 18 | * @return string |
| 19 | */ |
| 20 | public static function areaCode() |
| 21 | { |
| 22 | $areaCodes = array( |
| 23 | '11', '12', '13', '14', '15', '16', '17', '18', '19', '21', '22', '24', |
| 24 | '27', '28', '31', '32', '33', '34', '35', '37', '38', '41', '42', '43', |
| 25 | '44', '45', '46', '47', '48', '49', '51', '53', '54', '55', '61', '62', |
| 26 | '63', '64', '65', '66', '67', '68', '69', '71', '73', '74', '75', '77', |
| 27 | '79', '81', '82', '83', '84', '85', '86', '87', '88', '89', '91', '92', |
| 28 | '93', '94', '95', '96', '97', '98', '99' |
| 29 | ); |
| 30 | |
| 31 | return self::randomElement($areaCodes); |
| 32 | } |
| 33 | |
| 34 | /** |
| 35 | * Generates a 9-digit cellphone number without formatting characters. |
| 36 | * @param bool $formatted [def: true] If it should return a formatted number or not. |
| 37 | * @return string |
| 38 | */ |
| 39 | public static function cellphone($formatted = true) |
| 40 | { |
| 41 | $number = static::numerify(static::randomElement(static::$cellphoneFormats)); |
| 42 | |
| 43 | if (!$formatted) { |
| 44 | $number = strtr($number, array('-' => '')); |
| 45 | } |
| 46 | |
| 47 | return $number; |
| 48 | } |
| 49 | |
| 50 | /** |
| 51 | * Generates an 9-digit landline number without formatting characters. |
| 52 | * @param bool $formatted [def: true] If it should return a formatted number or not. |
| 53 | * @return string |
| 54 | */ |
| 55 | public static function landline($formatted = true) |
| 56 | { |
| 57 | $number = static::numerify(static::randomElement(static::$landlineFormats)); |
| 58 | |
| 59 | if (!$formatted) { |
| 60 | $number = strtr($number, array('-' => '')); |
| 61 | } |
| 62 | |
| 63 | return $number; |
| 64 | } |
| 65 | |
| 66 | /** |
| 67 | * Randomizes between cellphone and landline numbers. |
| 68 | * @param bool $formatted [def: true] If it should return a formatted number or not. |
| 69 | * @return mixed |
| 70 | */ |
| 71 | public static function phone($formatted = true) |
| 72 | { |
| 73 | $options = static::randomElement(array( |
| 74 | array('cellphone', false), |
| 75 | array('cellphone', true), |
| 76 | array('landline', null), |
| 77 | )); |
| 78 | |
| 79 | return call_user_func("static::{$options[0]}", $formatted, $options[1]); |
| 80 | } |
| 81 | |
| 82 | /** |
| 83 | * Generates a complete phone number. |
| 84 | * @param string $type [def: landline] One of "landline" or "cellphone". Defaults to "landline" on invalid values. |
| 85 | * @param bool $formatted [def: true] If the number should be formatted or not. |
| 86 | * @return string |
| 87 | */ |
| 88 | protected static function anyPhoneNumber($type, $formatted = true) |
| 89 | { |
| 90 | $area = static::areaCode(); |
| 91 | $number = ($type == 'cellphone')? |
| 92 | static::cellphone($formatted) : |
| 93 | static::landline($formatted); |
| 94 | |
| 95 | return $formatted? "($area) $number" : $area.$number; |
| 96 | } |
| 97 | |
| 98 | /** |
| 99 | * Concatenates {@link areaCode} and {@link cellphone} into a national cellphone number. |
| 100 | * @param bool $formatted [def: true] If it should return a formatted number or not. |
| 101 | * @return string |
| 102 | */ |
| 103 | public static function cellphoneNumber($formatted = true) |
| 104 | { |
| 105 | return static::anyPhoneNumber('cellphone', $formatted); |
| 106 | } |
| 107 | |
| 108 | /** |
| 109 | * Concatenates {@link areaCode} and {@link landline} into a national landline number. |
| 110 | * @param bool $formatted [def: true] If it should return a formatted number or not. |
| 111 | * @return string |
| 112 | */ |
| 113 | public static function landlineNumber($formatted = true) |
| 114 | { |
| 115 | return static::anyPhoneNumber('landline', $formatted); |
| 116 | } |
| 117 | |
| 118 | /** |
| 119 | * Randomizes between complete cellphone and landline numbers. |
| 120 | * @return mixed |
| 121 | */ |
| 122 | public function phoneNumber() |
| 123 | { |
| 124 | $method = static::randomElement(array('cellphoneNumber', 'landlineNumber')); |
| 125 | return call_user_func("static::$method", true); |
| 126 | } |
| 127 | |
| 128 | /** |
| 129 | * Randomizes between complete cellphone and landline numbers, cleared from formatting symbols. |
| 130 | * @return mixed |
| 131 | */ |
| 132 | public static function phoneNumberCleared() |
| 133 | { |
| 134 | $method = static::randomElement(array('cellphoneNumber', 'landlineNumber')); |
| 135 | return call_user_func("static::$method", false); |
| 136 | } |
| 137 | } |
| 138 |