Lumen7.x使用笔记(十二)封装随即数生成器

394 次浏览次阅读
没有评论

Lumen7.x 使用笔记(十二)封装随即说生成器

<?php

namespace App\Utils;

use Exception;
use Webpatser\Uuid\Uuid;
use WptCommon\Library\Facades\MLogger;

class Automatic
{
    /**
     * Notes:
     * Date: 2020/10/14
     * @param int $length
     * @return string
     */
    public static function generatedRandom(int $length)
    {
        $pattern = "abcdefghilkmnopqrstuvwxyzABCDEFGHIJKMNPQRSTUVWXY";
        $str = self::getRandom($length - 20, $pattern);
        try {$pattern = $str . substr(md5(Uuid::generate()->string . time()), 0, 20);
        } catch (Exception $e) {MLogger::info('generatedRandomFailed', ' 生成随机数失败 ');
        }
        $appKeyOrSecrets = str_split($pattern);
        foreach ($appKeyOrSecrets as $key => $appKeyOrSecret) {$check = ord($appKeyOrSecret);
            if (($check >= 65 && $check <= 90) || ($check >= 97 && $check <= 122)) {$newArr[] = empty(rand(0, 1)) ? strtoupper($appKeyOrSecret) : $appKeyOrSecret;
            } else {$newArr[] = $appKeyOrSecret;
            }
        }
        if (empty($newArr)) {MLogger::info('strSplitToupperFailed', ' 随机转换大小写失败 ');
            return '';
        }
        return implode('', $newArr);
    }

    /**
     * Notes: 自动生成用户名 |AppID|userInfoId
     * @param int $action
     * @return string
     */
    public static function automaticGenerated(int $action): string
    {
        $pattern = '23456789#abcdefghilkmnopqrstuvwxyzABCDEFGHIJKMNPQRSTUVWXY';
        switch ($action) {
            case 1:
                return self::getRandom(7, $pattern);
            case 2:
                return self::getRandom(6, $pattern);
            default:
                return self::getRandom(10, $pattern);
        }
    }

    /**
     * Notes: 随机字符串
     * @param int $length
     * @param string $pattern
     * @return string
     */
    protected static function getRandom(int $length, string $pattern): string
    {
        $key = '';
        for ($i = 0; $i < $length; $i++) {$key .= $pattern{mt_rand(0, 35)};
        }
        return $key;
    }
}
正文完
 0
评论(没有评论)