%PDF- %PDF-
Direktori : /var/www/html/workeasy-api/vendor/fzaninotto/faker/src/Faker/Provider/ |
Current File : //var/www/html/workeasy-api/vendor/fzaninotto/faker/src/Faker/Provider/Base.php |
<?php namespace Faker\Provider; use Faker\Generator; use Faker\DefaultGenerator; use Faker\UniqueGenerator; class Base { /** * @var \Faker\Generator */ protected $generator; /** * @var \Faker\UniqueGenerator */ protected $unique; /** * @param \Faker\Generator $generator */ public function __construct(Generator $generator) { $this->generator = $generator; } /** * Returns a random number between 0 and 9 * * @return integer */ public static function randomDigit() { return mt_rand(0, 9); } /** * Returns a random number between 1 and 9 * * @return integer */ public static function randomDigitNotNull() { return mt_rand(1, 9); } /** * Returns a random number with 0 to $nbDigits digits. * * The maximum value returned is mt_getrandmax() * * @param integer $nbDigits Defaults to a random number between 1 and 9 * @param boolean $strict Whether the returned number should have exactly $nbDigits * @example 79907610 * * @return integer */ public static function randomNumber($nbDigits = null, $strict = false) { if (!is_bool($strict)) { throw new \InvalidArgumentException('randomNumber() generates numbers of fixed width. To generate numbers between two boundaries, use numberBetween() instead.'); } if (null === $nbDigits) { $nbDigits = static::randomDigitNotNull(); } $max = pow(10, $nbDigits) - 1; if ($max > mt_getrandmax()) { throw new \InvalidArgumentException('randomNumber() can only generate numbers up to mt_getrandmax()'); } if ($strict) { return mt_rand(pow(10, $nbDigits - 1), $max); } return mt_rand(0, $max); } /** * Return a random float number * * @param int $nbMaxDecimals * @param int|float $min * @param int|float $max * @example 48.8932 * * @return float */ public static function randomFloat($nbMaxDecimals = null, $min = 0, $max = null) { if (null === $nbMaxDecimals) { $nbMaxDecimals = static::randomDigit(); } if (null === $max) { $max = static::randomNumber(); } if ($min > $max) { $tmp = $min; $min = $max; $max = $tmp; } return round($min + mt_rand() / mt_getrandmax() * ($max - $min), $nbMaxDecimals); } /** * Returns a random number between $min and $max * * @param integer $min default to 0 * @param integer $max defaults to 32 bit max integer, ie 2147483647 * @example 79907610 * * @return integer */ public static function numberBetween($min = 0, $max = 2147483647) { return mt_rand($min, $max); } /** * Returns a random letter from a to z * * @return string */ public static function randomLetter() { return chr(mt_rand(97, 122)); } /** * Returns random elements from a provided array * * @param array $array Array to take elements from. Defaults to a-f * @param integer $count Number of elements to take. * @throws \LengthException When requesting more elements than provided * * @return array New array with $count elements from $array */ public static function randomElements(array $array = array('a', 'b', 'c'), $count = 1) { $allKeys = array_keys($array); $numKeys = count($allKeys); if ($numKeys < $count) { throw new \LengthException(sprintf('Cannot get %d elements, only %d in array', $count, $numKeys)); } $highKey = $numKeys - 1; $keys = $elements = array(); $numElements = 0; while ($numElements < $count) { $num = mt_rand(0, $highKey); if (isset($keys[$num])) { continue; } $keys[$num] = true; $elements[] = $array[$allKeys[$num]]; $numElements++; } return $elements; } /** * Returns a random element from a passed array * * @param array $array * @return mixed */ public static function randomElement($array = array('a', 'b', 'c')) { if (!$array) { return null; } $elements = static::randomElements($array, 1); return $elements[0]; } /** * Returns a random key from a passed associative array * * @param array $array * @return mixed */ public static function randomKey($array = array()) { if (!$array) { return null; } $keys = array_keys($array); $key = $keys[mt_rand(0, count($keys) - 1)]; return $key; } /** * Replaces all hash sign ('#') occurrences with a random number * Replaces all percentage sign ('%') occurrences with a not null number * * @param string $string String that needs to bet parsed * @return string */ public static function numerify($string = '###') { // instead of using randomDigit() several times, which is slow, // count the number of hashes and generate once a large number $toReplace = array(); for ($i = 0, $count = strlen($string); $i < $count; $i++) { if ($string[$i] === '#') { $toReplace []= $i; } } if ($nbReplacements = count($toReplace)) { $maxAtOnce = strlen((string) mt_getrandmax()) - 1; $numbers = ''; $i = 0; while ($i < $nbReplacements) { $size = min($nbReplacements - $i, $maxAtOnce); $numbers .= str_pad(static::randomNumber($size), $size, '0', STR_PAD_LEFT); $i += $size; } for ($i = 0; $i < $nbReplacements; $i++) { $string[$toReplace[$i]] = $numbers[$i]; } } $string = preg_replace_callback('/\%/u', 'static::randomDigitNotNull', $string); return $string; } /** * Replaces all question mark ('?') occurrences with a random letter * * @param string $string String that needs to bet parsed * @return string */ public static function lexify($string = '????') { return preg_replace_callback('/\?/u', 'static::randomLetter', $string); } /** * Replaces hash signs and question marks with random numbers and letters * * @param string $string String that needs to bet parsed * @return string */ public static function bothify($string = '## ??') { return static::lexify(static::numerify($string)); } /** * Converts string to lowercase. * Uses mb_string extension if available. * * @param string $string String that should be converted to lowercase * @return string */ public static function toLower($string = '') { return extension_loaded('mbstring') ? mb_strtolower($string, 'UTF-8') : strtolower($string); } /** * Converts string to uppercase. * Uses mb_string extension if available. * * @param string $string String that should be converted to uppercase * @return string */ public static function toUpper($string = '') { return extension_loaded('mbstring') ? mb_strtoupper($string, 'UTF-8') : strtoupper($string); } /** * Chainable method for making any formatter optional. * * @param float $weight Set the probability of receiving a null value. * "0" will always return null, "1" will always return the generator. * @return mixed|null */ public function optional($weight = 0.5, $default = null) { if (mt_rand() / mt_getrandmax() <= $weight) { return $this->generator; } return new DefaultGenerator($default); } /** * Chainable method for making any formatter unique. * * <code> * // will never return twice the same value * $faker->unique()->randomElement(array(1, 2, 3)); * </code> * * @param boolean $reset If set to true, resets the list of existing values * @param integer $maxRetries Maximum number of retries to find a unique value, * After which an OverflowExcption is thrown. * @throws OverflowException When no unique value can be found by iterating $maxRetries times * * @return UniqueGenerator A proxy class returning only non-existing values */ public function unique($reset = false, $maxRetries = 10000) { if ($reset || !$this->unique) { $this->unique = new UniqueGenerator($this->generator, $maxRetries); } return $this->unique; } }