<?php

declare(strict_types=1);

namespace Helper;

/**
 * Classe utilitaire portant un générateur aléatoire de chaînes
 */
class Random
{
    /**
     * Production d'un code aléatoire (minuscule, majuscule et chiffre)
     *
     * @param int $size taille de la chaîne
     *
     * @return string chaîne aléatoire
     *
     * @see rand() https://www.php.net/manual/fr/function.rand.php
     * @see ord() https://www.php.net/manual/fr/function.ord.php
     * @see chr() https://www.php.net/manual/fr/function.chr.php
     */
    public static function string(int $size): string
    {
        $string = '';
        for ($i = 0; $i < $size; $i++) {
            // Une chance sur trois
            switch (rand(0, 2)) {
                case 0 : // Majuscule
                    $string .= chr(rand(ord('A'), ord('Z')));
                    break;
                case 1 : // Minuscule
                    $string .= chr(rand(ord('a'), ord('z')));
                    break;
                case 2 : // Chiffre
                    $string .= chr(rand(ord('1'), ord('9')));
                    break;
            }
        }

        return $string;
    }
}