Spaces:
No application file
No application file
| namespace Mautic\CoreBundle\Helper\RandomHelper; | |
| final class RandomHelper implements RandomHelperInterface | |
| { | |
| /** | |
| * Based on \Nette\Utils\Random. | |
| * | |
| * @param int $length | |
| * @param string $charlist | |
| */ | |
| public function generate($length = 10, $charlist = '0-9a-z'): string | |
| { | |
| $charlist = count_chars(preg_replace_callback('#.-.#', fn (array $m): string => implode('', range($m[0][0], $m[0][2])), $charlist), 3); | |
| $chLen = strlen($charlist); | |
| if ($length < 1) { | |
| throw new \InvalidArgumentException('Length must be greater than zero.'); | |
| } elseif ($chLen < 2) { | |
| throw new \InvalidArgumentException('Character list must contain as least two chars.'); | |
| } | |
| $res = ''; | |
| for ($i = 0; $i < $length; ++$i) { | |
| $res .= $charlist[random_int(0, $chLen - 1)]; | |
| } | |
| return $res; | |
| } | |
| } | |