环境:
CentOS Linux release 7.7.1908 (Core)
PHP 7.3.11
UUID Extention 1.0.4

感觉上PHP对UUID的支持似乎不是很上心,PECL中的UUID扩展仅仅是对libuuid的打包,并没有像其他语言那样直接提供完整的UUID实现。由于libuuid仅仅提供了版本1和版本4的UUID,所以……,开心一点,这两个就够用了。


uuid_create( [int $uuid_type = UUID_TYPE_DEFAULT] ) : string

$uuid_type

  如下常量之一:
    UUID_TYPE_DEFAULT    //
    UUID_TYPE_TIME       //
    UUID_TYPE_DCE        //
    UUID_TYPE_NAME       //
    UUID_TYPE_RANDOM     //
  libuuid提供了UUID版本1和版本4的实现,也只定义了 UUID_TYPE_DCE_TIME 和 UUID_TYPE_DCE_RANDOM 两个常量。PHP的UUID扩展中,常量是通过映射libuuid的常量定义的。所以,虽然扩展中根据UUID标准定义了4个常量名,但对于当前版本的libuuid,也只能映射到两个常量。 UUID_TYPE_TIME 映射为libuuid的常量 UUID_TYPE_DCE_TIME ,对应UUID版本1的实现; UUID_TYPE_RANDOM 映射为libuuid的常量 UUID_TYPE_DCE_RANDOM ,对应uuid版本4的实现。而 UUID_TYPE_DCE 和 UUID_TYPE_NAME 两个常量,虽然从常量名上很容易看出是对应着UUID的版本2和版本3、5,但目前也只能映射为libuuid的常量 UUID_TYPE_DCE_RANDOM 和 UUID_TYPE_DCE_TIME ,可以使用但不具有实际意义。
  常量 UUID_TYPE_DEFAULT 为默认值,表示了libuuid的默认选择。默认情况下,如果系统存在高质量的随机数(比如/dev/urandom或/dev/random可用),则提供版本4的UUID,否则提供版本1的UUID。一般认为版本1的UUID发生重复的概率更小,近乎可以保证真正的唯一性,但考虑到泄露MAC带来的安全忧虑,大多数时候还是倾向于采用版本4的UUID。
return
  如果参数有效(0、1或4),返回UUID字符串。
  如果参数不能识别,抛出警告信息并返回默认的UUID字符串。


uuid_is_valid( string $uuid ) : bool

$uuid

  待测试的UUID字符串。
return
  返回true或false。$uuid对大小写不敏感。


uuid_compare(string $uuid1, string $uuid2) : int

$uuid1 ,  $uuid2

  待比较的UUID字符串。
returen
  如果 $uuid1 或 $uuid2 不是有效的UUID字符串,返回bool值 false 。
  如果 $uuid1 和 $uui2 不相同: $uuid1 < $uuid2 ,则返回一个正整数; $uuid1 > $uuid2 ,则返回一个负整数。
  如果 $uuid1 = $uuid2 ,返回整型值0。


uuid_is_null(string $uuid) : bool

$uuid

  待测试的UUID字符串。
return
  如果 $uuid 不是有效的UUID字符串,返回 false 。
  如果 $uuid 不是NULL UUID字符串,返回 false 。
  如果 $uuid 是NULL UUID字符串,返回 true 。
NULL UUID
  '00000000-0000-0000-0000-000000000000'这个各位均为0的UUID字符串被称为NULL UUID(或NIL UUID?)。


uuid_type(string $uuid) : int

$uuid

  待测试的uuid字符串。
return
  如果 $uuid 不是有效的UUID字符串,返回bool值 false 。
  如果 $uuid 是NULL UUID,返回整型值-1。
  如果 $uuid 是有效的UUID字符串,返回1,2,3,4或5,对应UUID的版本。


uuid_variant(string $uuid) : int

$uuid

  待测试的UUID字符串。
return
  如果 $uuid 不是有效的UUID字符串,返回bool类型值 false 。
  如果 $uuid 是NULL UUID,返回整型值-1。
  如果 $uuid 是有效的UUID字符串,返回整型值0,1,2或3。
  根据libuuid定义的常量名,很容易分辨返回值的含义:
    UUID_VARIANT_NCS          // 
    UUID_VARIANT_DCE          // 
    UUID_VARIANT_MICROSOFT    // 
    UUID_VARIANT_OTHER        //


uuid_time(string $uuid) : int

$uuid

  待解析的UUID字符串。
return
  如果 $uuid 不是有效的UUID字符串,如果 $uuid 不是rfc4122定义的变体(uuid_variant()返回值为1,在libuuid中预定义的常量为 UUID_VARIANT_DCE ),如果 $uuid 不是版本1的UUID(基于时间的UUID),则返回bool值 false 。
  如果 $uuid 是根据rfc4122定义的版本1构造的UUID,返回一个整型值。这个值就是构造UUID字符串的时候使用的UNIX时间戳。


uuid_mac(string $uuid) : string

$uuid

  待解析的uuid字符串。
return
  如果 $uuid 不是有效的UUID字符串,如果 $uuid 不是rfc4122定义的变体(uuid_variant()返回值为1,在libuuid中预定义的常量为 UUID_VARIANT_DCE ),如果 $uuid 不是版本1的UUID(基于时间的UUID),则返回bool值 false 。
  如果构造 $uuid 的时候使用的不是有效的MAC地址,则返回bool值 false 。
  如果 $uuid 是根据rfc4122定义的版本1构造的uuid,并且构造 $uuid 时使用的是有效的MAC地址,则返回这个MAC地址,表示为一个12位的16进制字符串。


uuid_parse(string $uuid) : string

$uuid

  待打包的UUID字符串。
return
  如果 $uuid 不是有效的UUID字符串,返回bool值 false 。
  如果 $uuid 是有效的UUID字符串,则去除“-”后打包成一个16位长的高位在前二进制字符串并返回。类似PHP中函数pack('L*')的效果。


uuid_unparse(string $uuid) : string

  函数uuid_parse()的反向过程。如果参数数据有效,则返回一个UUID字符串,否则返回bool值 false 。

OK,就这些。希望有帮助。

参考:
https://tools.ietf.org/html/rfc4122
https://sourceforge.net/p/libuuid/code/ci/master/tree/

在PHP中使用UUID扩展的函数的更多相关文章

  1. postgresql 添加uuid扩展

    去年用EF Core做数据迁移到psql数据库的时候遇到了缺失uuid的错误,当时帅气的脸蛋突然懵逼了.现记录一下 以备参考. 环境:Centos7.2  psql  Xshell Xshell连接C ...

  2. javascript中的数组扩展(一)

     javascript中的数组扩展(一) 随着学习的深入,发现需要学习的关于数组的内容也越来越多,后面将会慢慢归纳,有的是对前面的强化,有些则是关于前面的补充. 一.数组的本质    数组是按照次序排 ...

  3. LR中日志设置和日志函数

    LR中日志参数的设置与使用 1.Run-Time Setting日志参数的设置 在loadrunner的vuser菜单下的Run-Time Setting的General的LOG选项中可以对在执行脚本 ...

  4. 浅析Thinkphp框架中运用phprpc扩展模式

    浅析Thinkphp框架中应用phprpc扩展模式 这次的项目舍弃了原来使用Axis2做web服务端的 方案,改用phprpc实现,其一是服务端的thinkphp已集成有该模式接口,其二是phprpc ...

  5. MySQL中的空间扩展

    目录 19.1. 前言 19.2. OpenGIS几何模型 19.2.1. Geometry类的层次 19.2.2. 类Geometry 19.2.3. 类Point 19.2.4. 类Curve 1 ...

  6. jQuery源码分析-03扩展工具函数jQuery.extend

    // 扩展工具函数 jQuery.extend({ // http://www.w3school.com.cn/jquery/core_noconflict.asp // 释放$的 jQuery 控制 ...

  7. PHP中生成UUID

    一.什么是UUID 简单的说UUID就是一串全球唯一的(16进制)数字串. UUID的全拼为“Universally Unique Identifier”,可以译为“通用唯一识别码”.UUID由开源软 ...

  8. Python框架学习之Flask中的常用扩展包

    Flask框架是一个扩展性非常强的框架,所以导致它有非常多的扩展包.这些扩展包的功能都很强大.本节主要汇总一些常用的扩展包. 一. Flask-Script pip install flask-scr ...

  9. (笔记)Linux内核中内存相关的操作函数

    linux内核中内存相关的操作函数 1.kmalloc()/kfree() static __always_inline void *kmalloc(size_t size, gfp_t flags) ...

随机推荐

  1. 关于python的四舍五入

    参考https://blog.csdn.net/qq_39234705/article/details/82817703 四舍五入有很多相关资料,主要用两种方法round()和'%.2f' 两种方法取 ...

  2. adb server version (31) doesn't match this client (41); killing...

    1.有时候用adb工具去连接安卓设备,或者模拟器的时候,会提示adb server version(31) doesn’t match this client(41)这样的提示.如图 提示的字面意思就 ...

  3. 探索ENCODE数据库 | Encyclopedia of DNA Elements

    ENCODE: Encyclopedia of DNA Elements 目标:按不同组织,收集人类(还有小鼠.worm.fly)基因组里面的所有功能元件 The primary goal of th ...

  4. List和数组的互转

    list转数组: /要转换的list集合 List<String> testList = new ArrayList<String>(){{add("aa" ...

  5. python windows下安装pip及rarfile

    python之所以被广泛使用,倒不见得是本身语法简单,而是而nodejs/javascript一样把三方库的依赖管理简化了,而不用和java一样非得通过maven管理,而且还得打包后在classpat ...

  6. vue中axios使用二:axios以post,get,jsonp的方式请求后台数据

    本文为博主原创,转载请注明出处 axios在上一篇中讲过:vue中axios使用一:axios做拦截器,axios是请求后台资源的模块,用来请求后台资源. axios本身是支持get,post请求后台 ...

  7. SVN 从主干合并到分支库

    主干库:平时开发用的库, 分支库:中途需要进行上生产环境的库 分支库的版本从主干库拉过去就行 红色的为分支库. 创建的速度很快. 1.创建好后,在主干库添加一个文件. 2.然后分支库进行合并,这里用e ...

  8. python-- python threadpool 的前世今生

    引出 首先需要了解的是threadpool 的用途,他更适合于用到一些大量的短任务合集,而非一些时间长的任务,换句话说,适合大量的CPU密集型短任务,那些消耗时间较长的IO密集型长任务适合用协程去解决 ...

  9. Sword CRC算法原理

    CRC校验原理 CRC校验其根本思想a.发送端和接收端约定一个整数 bb.发送端在原始数据帧后面附加一个数 k ,产生一个新的数据帧c.接收端接收到数据帧后,对接收的数据帧和整数 b 进行位异或操作, ...

  10. Django的分页器 paginator

    导入 from django.core.paginator import Paginator,EmptyPage,PageNotAnInteger Page对象 Paginator.page()将返回 ...