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;
}
}
正文完