<?php
namespace Faker\Provider\en_ZA;
class PhoneNumber extends \Faker\Provider\PhoneNumber
{
protected static $formats = [
'+27({{areaCode}})#######',
'+27{{areaCode}}#######',
'0{{areaCode}}#######',
'0{{areaCode}} ### ####',
'0{{areaCode}}-###-####',
];
protected static $cellphoneFormats = [
'+27{{cellphoneCode}}#######',
'0{{cellphoneCode}}#######',
'0{{cellphoneCode}} ### ####',
'0{{cellphoneCode}}-###-####',
];
protected static $specialFormats = [
'{{specialCode}}#######',
'{{specialCode}} ### ####',
'{{specialCode}}-###-####',
'({{specialCode}})###-####',
];
protected static $tollFreeAreaCodes = [
'0800', '0860', '0861', '0862',
];
/**
* @see https://en.wikipedia.org/wiki/Telephone_numbers_in_South_Africa
*/
public static function areaCode()
{
$digits[] = self::numberBetween(1, 5);
switch ($digits[0]) {
case 1:
$digits[] = self::numberBetween(1, 8);
break;
case 2:
$number = self::numberBetween(1, 8);
$digits[] = in_array($number, [5, 6], false) ? $number + 2 : $number;
break;
case 3:
$number = self::numberBetween(1, 8);
$digits[] = in_array($number, [7, 8], false) ? $number - 2 : $number;
break;
case 4:
$digits[] = self::numberBetween(1, 9);
break;
case 5:
$number = self::numberBetween(1, 8);
$digits[] = in_array($number, [2, 5], false) ? $number + 2 : $number;
break;
}
return implode('', $digits);
}
public static function cellphoneCode()
{
$digits[] = self::numberBetween(6, 8);
switch ($digits[0]) {
case 6:
$digits[] = self::numberBetween(0, 2);
break;
case 7:
$number = self::numberBetween(1, 9);
$digits[] = in_array($number, [5, 7], false) ? $number + 1 : $number;
break;
case 8:
$digits[] = self::numberBetween(1, 9);
break;
}
return implode('', $digits);
}
public static function specialCode()
{
return static::randomElement(static::$tollFreeAreaCodes);
}
public function mobileNumber()
{
$format = static::randomElement(static::$cellphoneFormats);
return self::numerify($this->generator->parse($format));
}
public function tollFreeNumber()
{
$format = static::randomElement(static::$specialFormats);
return self::numerify($this->generator->parse($format));
}
}
Contact Section
We’d love to hear from you! Whether you have questions, feedback, or need support, our team is here to help. Reach out to us via email, phone, or visit our office. We’re committed to providing you with exceptional service and ensuring your experience with NFC Pay is seamless and satisfying. Let’s connect!