php8.0新特性:命名参数
2023年9月2日10:19:00
<?php
namespace App\Services\Admin;
use DateTime;
class GeneratorService
{
//订单key前缀
const ORDER = 'Z_';
//支付key前缀
const DOPAY = 'PAY_';
const KEY_LENGTH = 27;
// 返回数据固定长度 29
public static function getRandKey()
{
list($usec, $sec) = explode(" ", microtime());
list($zero, $u) = explode('.', $usec);
$time = date('YmdHis', $sec) . $u;
//随机数
$randval = rand(100, 999) . rand(100, 999);
return $time . $randval;
}
//算法明发性能一般,线上建议优化
public static function getNewRandKey()
{
$dateTime = new DateTime();
$time = $dateTime->format('YmdHisu');
//随机数
$randval = rand(100, 999) . rand(100, 999);
return $time . $randval;
}
public static function getUniqKey(string $format = 'YmdHisu', string $prefix = '')
{
$dateTime = new DateTime();
$time = $dateTime->format($format);
$randval = uniqid();
return empty($prefix) ? $time . $randval : $prefix . $time . $randval;
}
//通用订单号生产
public static function getOrderKey()
{
return self::ORDER . self::getNewRandKey();
}
//通用支付订单号生产
public static function getPayKey()
{
return self::DOPAY . self::getNewRandKey();
}
public static function getShortKey()
{
return strtoupper(uniqid() . rand(100, 999));
}
}
调用的时候通常是:
$r = GeneratorService::getUniqKey('YmdHisu', 'zx');
p($r);
$r = GeneratorService::getShortUniqKey(prefix: 'zx', format: 'YmdHisu');
p($r);
$r = GeneratorService::getShortUniqKey(prefix: 'zx', format: 'YmdHisu');
p($r);
$r = GeneratorService::getShortUniqKey(prefix: 'zx');
p($r);
这样就可以不用去写每个参数的变量名,这样可以减少一些操作
QQ一群 247823727
QQ二群 166427999
博客文件如果不能下载请进群下载
如果公司项目有技术瓶颈问题,请联系↓↓
如果需要定制系统开发服务,请联系↓↓
技术服务QQ: 903464207
QQ二群 166427999
博客文件如果不能下载请进群下载
如果公司项目有技术瓶颈问题,请联系↓↓
如果需要定制系统开发服务,请联系↓↓
技术服务QQ: 903464207