Symfonyob娱乐下载 5.3新增功能:UID改进
警告:这篇文章是关于一个不受支持的Symfony版本。ob娱乐下载有些信息可能已经过时了。阅读最新的Symfony文档ob娱乐下载.
的UID组件在Symfony 5.1中作为实验性ob娱乐下载特性引入,以帮助您生成和使用uid(通用唯一标识符),例如uuid和ulid。在Syob娱乐下载mfony 5.3中,这个组件不再被认为是实验性的,我们为它添加了一些新特性。
生成uid的新方法
创建UID值很容易,这要归功于以下方法Uuid: v1 ()
,Uuid: v4 ()
,新的Ulid ()
等。在Syob娱乐下载mfony 5.3中,我们添加了新的方法,这样你就可以从UID的几个字符串表示中创建UID对象:
1 2 3 4 5 6 7 8 9
$uuid= Uuid::fromBinary (“\ xd9 \ xe7 \ xa1 \ x84 \ x5d \ x5b \ x11 \ xea \ xa6 \ x2a \ x34 \ x99 \ x71 \ x00 \ x62 \ xd0”);$uuid= Uuid::fromBase32 (“6 swygr8qav27nacahmk5rg0rpg”);$uuid= Uuid::fromBase58 (“TuetYWNHhmuSQ3xPoVLv9M”);$uuid= Uuid::fromRfc4122 (“d9e7a184 - 5 - d5b - 11 - ea - a62a - 3499710062 - d0的);$ulid= Ulid::fromBinary (“\ x01 \ x71 \ x06 \ x9d \ x59 \ x3d \ x97 \ xd3 \ x8b \ x3e \ x23 \ xd0 \ x6d \ xe5 \ xb3 \”();$ulid= Ulid::fromBase32 (“01 e439tp9xjz9rpfh3t1pybcr8”);$ulid= Ulid::fromBase58 (“1 bkocmc5bnrvcuq2ti4eqm”);$ulid= Ulid::fromRfc4122 (0171069 d - 593 d - 97 - d3 - 8 b3e - 23 - d06de5b308”);
此外,我们还增加了一些服务,例如ulid.factory
而且uuid.factory
(以及它们对应的自动装配别名UlidFactory
,UuidFactory
,等等),这样您就可以自定义uid的创建。生成的uid的默认值现在是语义配置的:
1 2 3 4
#配置/包/ framework.yaml框架:uid:default_uuid_version:4
最后,我们添加了UlidGenerator
而且UuidGenerator
类,因此您可以使用它们作为Doctrine ID生成器,使用uid作为Doctrine实体中主键的值。
UID表单类型
与表单组件是uid最后缺失的功能之一。这就是为什么在Symfonyob娱乐下载 5.3中我们添加了UuidType
而且UlidType
表单类型,以便您可以在表单中使用UID值。
这些表单类型呈现一个< input type = " text " >
字段中包含给定UID对象的字符串表示形式,并在提交表单时将其转换回UID对象。
序列化uid
的序列化器组件包括一个UidNormalizer
转换类型的对象ob娱乐下载Symfony \ \ Uid \ AbstractUid组件
为字符串。在Syob娱乐下载mfony 5.3中,我们对其进行了改进,以支持不同的字符串格式。
你现在可以通过UidNormalizer: NORMALIZATION_FORMAT_KEY
Context选项,并将其设置为所需的格式(例如。UidNormalizer: NORMALIZATION_FORMAT_RFC_4122
等)。
在控制台中生成和检查uid
UID组件现在包含一些控制台命令,以帮助您生成和检查UUID/ UUID值的详细信息。
读了UID命令文档在使用这些命令之前,要了解如何在应用程序中启用它们:
1 2 3 4 5 6
$PHP bin/console uuid:generate——random-based$PHP bin/console ulid:generate——count=2——format=rfc4122#使用'——help '选项来检查它们的所有选项:$PHP bin/console uuid:generate——.帮助$PHP bin/console ulid:generate——.帮助
1 2 3 4 5 6 7 8 9 10
$php bin /控制台ulid: 01 f2ttcsyk1pdrh73z41bn1c4x进行检查 --------------------- -------------------------------------- 标签的值 --------------------- -------------------------------------- 规范(基地32)01 f2ttcsyk1pdrh73z41bn1c4x基地58 0178 b5a6 bygm16js4kx3vycyskkq6 RFC 4122 - 67 - d3 - 0 - d9b - 889 c - 7 f205750b09d --------------------- -------------------------------------- 时间戳2021-04-09 08:01:24.947 --------------------- --------------------------------------
评论
但我想知道的是fromBase32和fromBase58 -我经常使用基转换来缩短uuid和哈希数据,但主要是base36 (0-9a-z)用于不区分大小写的环境,如默认Doctrine ORM列排序和base62 (0-9a-zA-Z)用于区分大小写比较工作良好的地方(https://github.com/epk-technologies/epk-symfony-bundle/tree/main/src/Utils)。ob娱乐下载为什么选择32进制和58进制?除了结果会更长之外,与36进制和62进制相比,你有什么优势?
关于base32 vs 36:因为32是ULID的规范表示,并且因为它更容易计算。关于base58 vs 62:因为这样可以防止使用令人困惑的字母“0OIl”——一个来自比特币地址的想法。就长度而言,这在实践中没有任何改变。
@David你是对的,这符合ULID规范。关于相同毫秒内的单调性的说明与并行服务器进程有关,它们每个都将选择不同的随机偏移量。但是在相同的过程中,ULID鼓励每次只增加1的随机偏移量。
评论截止。
为了确保评论保持相关性,旧帖子将被关闭。
Javier Eguiluz is a certified Symfony engineer.
Get certified! Online exams available in all countries.
Register Now