public static function generate($state = false, $separator = '-')
{
if (!static::$initialized) {
static::initialize();
static::$initialized = true;
}
$states = static::$states;
$statePrefixes = static::$statePrefixes;
$highgroup = static::$highgroup;
$possibleGroups = static::$possibleGroups;
if ($state === false) {
$state = $states[mt_rand(0, count($states) - 1)];
}
$state = strtoupper($state);
// Sanity check: is this a valid state?
if (!isset($statePrefixes[$state])) {
return false;
}
// Generate area number
$area = $statePrefixes[$state][array_rand($statePrefixes[$state])];
// Generate group number
$group = $possibleGroups[mt_rand(0, array_search($highgroup[$area], $possibleGroups))];
// Generate valid group number
// Generate last four
$lastfour = sprintf('%04s', trim(mt_rand(0, 9999)));
return sprintf('%03s', $area) . $separator . sprintf('%02s', $group) . $separator . $lastfour;
}