使用Unix时间戳为PHP生成版本7 UUIDs

1.0.1 2024-07-21 21:08 UTC

README

Automation Supported PHP Version GitHub Sponsors Code Coverage Type Coverage Psalm Level Latest Version on Packagist Downloads

使用Unix时间戳为PHP生成版本7 UUIDs

安装

您可以通过composer安装此包

composer require ghostwriter/uuid

如果您觉得这个仓库有用,请给它加星标 ⭐️

您也可以给它加星标 (🌟) 以便以后更容易找到。

用法

使用给定的UUID字符串初始化一个新的Uuid实例

use Ghostwriter\Uuid\Uuid;

$uuid = new Uuid('0000669c-8deb-7fe7-b9cc-692b216999a3');

echo $uuid->toString(); // 0000669c-8deb-7fe7-b9cc-692b216999a3

生成一个新的UUID

echo Uuid::new()->toString(); // 0000669c-8f99-711e-9ed0-72a35c3b6fb3

使用特定的时间戳生成一个新的UUID

echo Uuid::new(new DateTimeImmutable())->toString(); // 0000669c-8faf-7e4b-9ed9-45c4c2b27f07

根据时间戳比较UUIDs

$uuid1 = Uuid::new(new DateTimeImmutable('-1 year'));
$uuid2 = Uuid::new(new DateTimeImmutable('-1 month'));
$uuid3 = Uuid::new(new DateTimeImmutable('-1 week'));
$uuid4 = Uuid::new(new DateTimeImmutable('-1 day'));

assert(0 === $uuid1->compare($uuid1));
assert(-1 === $uuid1->compare($uuid2));
assert(-1 === $uuid1->compare($uuid3));
assert(-1 === $uuid1->compare($uuid4));

assert(1 === $uuid2->compare($uuid1));
assert(0 === $uuid2->compare($uuid2));
assert(-1 === $uuid2->compare($uuid3));
assert(-1 === $uuid2->compare($uuid4));

assert(1 === $uuid3->compare($uuid1));
assert(1 === $uuid3->compare($uuid2));
assert(0 === $uuid3->compare($uuid3));
assert(-1 === $uuid3->compare($uuid4));

assert(1 === $uuid4->compare($uuid1));
assert(1 === $uuid4->compare($uuid2));
assert(1 === $uuid4->compare($uuid3));
assert(0 === $uuid4->compare($uuid4));

/** @var array{0:UuidInterface,1:UuidInterface,2:UuidInterface,3:UuidInterface} $uuids */
$uuids = [$uuid3, $uuid1, $uuid4, $uuid2];

usort($uuids, static fn (UuidInterface $left, UuidInterface $right): int => $left->compare($right));

assert($uuid1->toString() === $uuids[0]->toString());
assert($uuid2->toString() === $uuids[1]->toString());
assert($uuid3->toString() === $uuids[2]->toString());
assert($uuid4->toString() === $uuids[3]->toString());

鸣谢

变更日志

请查看CHANGELOG.md 了解最近的变化。

许可证

请查看LICENSE 了解此项目的许可证信息。

安全

请查看SECURITY.md 了解安全披露过程。