首页 > 编程语言 >php8.0新特性:命名参数

php8.0新特性:命名参数

时间:2023-09-02 10:33:54浏览次数:44  
标签:return format php8.0 YmdHisu prefix 参数 randval time 命名

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 getShortUniqKey(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);

这样就可以不用去写每个参数的变量名,这样可以减少一些操作

标签:return,format,php8.0,YmdHisu,prefix,参数,randval,time,命名
From: https://www.cnblogs.com/zx-admin/p/17673289.html

相关文章

  • C6064:缺少“scanf_s”的整型参数(对应于转换说明符“2”
    问题描述//talkback.c--演示与用户交互#include<stdio.h>#include<string.h>//提供strlen()函数的原型#defineDENSITY62.4//人体密度(单位:磅/立方英尺)intmain(){ floatweight,volume; intsize,letters; charname[40]={0};/*声明字符串name,name是一个......
  • 编程中的参数
    一、参数的概念与作用参数是编程中的重要概念之一,用于向函数或方法传递输入值。在编程中,我们经常需要对不同的数据进行处理,而参数的引入使得函数能够根据不同的输入值产生不同的输出结果。参数可以帮助我们定义函数的行为,并且使得函数更加可复用和灵活。参数的作用主要有两个方......
  • BN的可训练参数,BN批归一化操作
    批归一化(BatchNormalization,简称BN)是一种深度学习中常用的正则化技术,它有一些可训练的参数,包括:缩放参数(Scale):通常用γ表示,它用来调整每个特征的标准差,从而控制特征的缩放。偏移参数(Shift):通常用β表示,它用来调整每个特征的平均值,从而控制特征的平移。这两个参数是可训练的,它......
  • 数组指针参数
    Constarr1:array[0..1,0..1]ofstring=(('A0B0','A1B0'),('A0B1','A1B1'));arr2:array[0..2,0..1]ofstring=(('X0Y0','X1Y0'),('X2Y0','X0Y1'),......
  • 函数命名
    1.标题旁的内容渲染<div><TitleComponent><PrimaryOrganization>{renderFunc?.()}<div>renderTitleExtras: 这个名称表明函数的目的是在标题右侧渲染额外的内容renderTitleExtensions: 如果渲染的内容类似于标题的侧边栏,这个名称可以传达其作用(渲染的内容......
  • springboot 使用RestTemplate调用get api,传入参数
    getapi:@ResponseBody@ResponseStatus(HttpStatus.OK)@GetMapping(value="/checkGetApi")@ApiOperation(value="checkgetapimethod")publicJSONObjectcheckGetApi(IntegeruserName){JSONObjectresult=......
  • kafka安装以及参数
    kafka安装安装JDKyuminstall-yjava-1.8.0-openjdk.x86_64查看版本java-versionkafka是分布式的,需要多台机器,并且保证机器之间是免密登录同时需要用zookeeper集群负责管理。1、kafka版本选择,从官网下载即可,我这使用的是kafka_2.12-2.70.tgz2、brokers节点分配,注......
  • Swagger3 (OpenAPI3)自定义参数对象渲染设置ModelConverter
    Swagger2设置方法以SpringDataJPA里的分页参数Pageable为例,在使用Swagger2的时候,可以通过自定义AlternateTypeRule,修改参数对象的参数渲染;如下/***分页参数实体类参数转换,让swagger显示正常的传参**@paramresolver*@return*/@BeanpublicAlternateTy......
  • Spring Boot - 引入 validation 对参数或实体类进行校验不管用
    版本说明我的父工程版本号是3.1.0。file:[pom.xml]<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.1.0</version><relativePath/><!--......
  • SpringBoot内置Tomcat的参数值
    SpringBoot内置Tomcat,在默认设置中,Tomcat的最大线程数是200,最大连接数是10000。默认情况下,支持最大并发量为一万,也就是指支持的连接数。Tomcat有两种处理连接的模式是BIO,一个线程只处理一个Socket连接是NIO,一个线程处理多个Socket连接处理多个连接的单个线程通常不会引起太......