Faker /src/Faker/Provider/Base.php

Language PHP Lines 189
MD5 Hash ee44c46deaa35560d9f2ea6645df5d1e
Repository https://github.com/gobb/Faker.git View Raw File
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
<?php

namespace Faker\Provider;

use Faker\Generator;

class Base
{
    /**
     * @var \Faker\Generator
     */
    protected $generator;

    /**
     * @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
     *
     * If $upTo is passed, it returns a number between $nbDigits (read as from) and $upTo
     *
     * @param integer $nbDigits
     * @param integer $upTo
     * @example 79907610
     *
     * @return integer
     */
    public static function randomNumber($nbDigits = null, $upTo = null)
    {
        if (null === $nbDigits) {
            $nbDigits = static::randomDigit();
        }

        if (null !== $upTo) {
            return static::numberBetween($nbDigits, $upTo);
        }

        return mt_rand(0, pow(10, $nbDigits) - 1);
    }

    /**
     * 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 $from and $to
     *
     * @param integer $from
     * @param integer $to
     * @example 79907610
     *
     * @return integer
     */
    public static function numberBetween($from = null, $to = null)
    {
        return mt_rand($from ?: 0, $to ?: 2147483647); // 32bit compat default
    }

    /**
     * Returns a random letter from a to z
     *
     * @return string
     */
    public static function randomLetter()
    {
        return chr(mt_rand(97, 122));
    }

    /**
     * Returns a random element from a passed array
     *
     * @param  array $array
     * @return mixed
     */
    public static function randomElement($array = array('a', 'b', 'c'))
    {
        return $array[mt_rand(0, count($array) - 1)];
    }

    /**
     * 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 = '###')
    {
        $string = preg_replace_callback('/\#/', 'static::randomDigit', $string);
        $string = preg_replace_callback('/\%/', '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('/\?/', '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);
    }
}
Back to Top