在PHP中使⽤UUID扩展的函数
环境:
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 //0
UUID_TYPE_TIME //1
UUID_TYPE_DCE //4
UUID_TYPE_NAME //1
UUID_TYPE_RANDOM //4
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 //0
UUID_VARIANT_DCE //1
UUID_VARIANT_MICROSOFT //2
UUID_VARIANT_OTHER //3
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字符串。php延时函数
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,就这些。希望有帮助。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论