uuid-php.x86“u 64 uuid”u create();参数为';t通过引用传递”;问题
uuid-php.x86“u 64 uuid”u create();参数为';t通过引用传递”;问题,php,uuid,Php,Uuid,uuid\u create要求通过引用传递参数 uuid_create(&$foo); 问题是,这将产生错误: Message: Call-time pass-by-reference has been deprecated PHP扩展uuid PHP.x86\u 64过时了吗?它与PHP5不“兼容”。有哪些替代方案 只是想强调这不是重复的。 $foo = NULL; uuid_create($foo); 将产生: Type: Run-time warni
uuid\u create
要求通过引用传递参数
uuid_create(&$foo);
问题是,这将产生错误:
Message: Call-time pass-by-reference has been deprecated
PHP扩展uuid PHP.x86\u 64
过时了吗?它与PHP5不“兼容”。有哪些替代方案
只是想强调这不是重复的。
$foo = NULL;
uuid_create($foo);
将产生:
Type: Run-time warnings (non-fatal error).
Message: uuid_create(): uuid_create: parameter wasn't passed by reference
PHP没有一个方法
uuid\u create
,文档中也没有提到它,因此如果它来自一个扩展,它很可能不是一个正式的,而且可能已经过时。函数需要一个out参数而不是返回值,这一事实已经非常明显地表明该函数相当糟糕
但是,编写PHP代码来生成uuid4非常简单,因为它对所有字段都使用随机值,也就是说,您不需要访问特定于系统的内容,例如MAC地址:
function uuid4() {
return sprintf('%04x%04x-%04x-%04x-%04x-%04x%04x%04x',
// 32 bits for "time_low"
mt_rand(0, 0xffff), mt_rand(0, 0xffff),
// 16 bits for "time_mid"
mt_rand(0, 0xffff),
// 16 bits for "time_hi_and_version",
// four most significant bits holds version number 4
mt_rand(0, 0x0fff) | 0x4000,
// 16 bits, 8 bits for "clk_seq_hi_res",
// 8 bits for "clk_seq_low",
// two most significant bits holds zero and one for variant DCE1.1
mt_rand(0, 0x3fff) | 0x8000,
// 48 bits for "node"
mt_rand(0, 0xffff), mt_rand(0, 0xffff), mt_rand(0, 0xffff)
);
}
没有。你只需要把
$foo
放进去,前面没有&
,就这样了。我在这里写了一条评论,然后搜索副本,几天前我们已经有了这个问题。我可能使用了exec('uuid-v4')
。最好看看这里:@hakreuniqid()
是一个毫无价值的实现。它就像time()+rand([…])
一样随机。我怀疑这是否比exec('uuid-v4')
-但我对TS看到的警告有点困惑。函数正常返回。@Guy:我想是的。无需创建新流程等。PHP实际上有一个UUID模块。它不是官方发行版的一部分,但由PHP核心团队维护,并通过PECL发布: