longtimett/random

1.0.1 2017-05-09 08:29 UTC

This package is not auto-updated.

Last update: 2024-09-29 02:23:53 UTC


README

注意:之前称为 rhumsaa/uuid,包和命名空间名称已更改为 ramsey/uuidRamsey\Uuid

Source Code Latest Version Software License Build Status Coverage Status Total Downloads

ramsey/uuid 是一个 PHP 5.4+ 库,用于生成和操作 RFC 4122 版本 1、3、4 和 5 的通用唯一标识符 (UUID)。

本项目遵守 贡献者行为准则。通过参与本项目及其社区,您应遵守此准则。

关于

来自 维基百科

UUID 的目的是使分布式系统能够在不进行显著中央协调的情况下唯一地标识信息。在这个上下文中,“唯一”一词应理解为“实际唯一”,而不是“保证唯一”。由于标识符具有有限的大小,两个不同的项目可能具有相同的标识符。需要选择标识符大小和生成过程,以便在实际上尽可能不可能发生。任何人都可以创建一个 UUID 并用它来标识某物,有合理的信心认为没有人会无意地创建相同的标识符来标识另一物。因此,带有 UUID 标记的信息可以在以后合并到一个数据库中,而不需要解决标识符(ID)冲突。

此库的许多灵感来自 JavaPython 的 UUID 库。

安装

首选的安装方法是使用 PackagistComposer。运行以下命令安装包并将其添加到项目的 composer.json 文件中

composer require ramsey/uuid

从 2.x 升级到 3.x

虽然我们对库进行了重大的内部更改,但我们已尽最大努力确保从本库的 2.x 系列无缝升级到 3.x。

一个主要的问题是,从 Rhumsaa 根命名空间过渡到 Ramsey。在大多数情况下,您只需要将代码中的命名空间更改为 Ramsey,一切就会“正常工作”。

以下是关于此库公共 API 破坏性更改的完整细节

  1. Rhumsaa 的所有命名空间引用都已更改为 Ramsey。只需在代码中将命名空间更改为 Ramsey,一切就应该可以正常工作。
  2. 控制台应用程序已移动到 ramsey/uuid-console。如果使用控制台功能,请使用 Composer 需求 ramsey/uuid-console
  3. Doctrine 字段类型映射已移动到 ramsey/uuid-doctrine。如果使用 Doctrine 功能,请使用 Composer 需求 ramsey/uuid-doctrine

如果您看到“rhumsaa/uuid 已弃用”的消息,应该怎么办

当使用 Composer 安装项目的依赖项时,您可能会看到以下消息

Package rhumsaa/uuid is abandoned, you should avoid using it. Use ramsey/uuid instead.

别担心。只需使用 Composer 执行以下命令

composer remove rhumsaa/uuid
composer require ramsey/uuid=^2.9

执行完毕后,您将拥有 2.x 系列的最新 ramsey/uuid 包,并且不需要修改任何代码;2.x 系列中的命名空间仍然是 Rhumsaa

需求

本库中的一些方法由于PHP 32位和64位构建的整型大小限制而有所要求。建议使用64位构建的PHP和Moontoast\Math库。然而,该库设计为可以在没有Moontoast\Math的32位PHP构建上工作,但功能会降低。请查阅API文档以获取更多信息。

如果缺少特定要求,则会抛出UnsatisfiedDependencyException异常,允许在调用不支持的环境中捕获不良调用并优雅地降级。

API文档

最新的类API文档可在网上找到:点击这里

本项目使用ApiGen生成此文档。要在自己的机器上生成文档,请安装开发依赖并从项目根目录运行以下命令:

composer build-docs

这将在build/apidocs/文件夹中生成文档。

示例

有关更多示例和特定用例的解决方案,请参阅wiki中的食谱

<?php
require 'vendor/autoload.php';

use Ramsey\Uuid\Uuid;
use Ramsey\Uuid\Exception\UnsatisfiedDependencyException;

try {

    // Generate a version 1 (time-based) UUID object
    $uuid1 = Uuid::uuid1();
    echo $uuid1->toString() . "\n"; // i.e. e4eaaaf2-d142-11e1-b3e4-080027620cdd

    // Generate a version 3 (name-based and hashed with MD5) UUID object
    $uuid3 = Uuid::uuid3(Uuid::NAMESPACE_DNS, 'php.net');
    echo $uuid3->toString() . "\n"; // i.e. 11a38b9a-b3da-360f-9353-a5a725514269

    // Generate a version 4 (random) UUID object
    $uuid4 = Uuid::uuid4();
    echo $uuid4->toString() . "\n"; // i.e. 25769c6c-d34d-4bfe-ba98-e0ee856f3e7a

    // Generate a version 5 (name-based and hashed with SHA1) UUID object
    $uuid5 = Uuid::uuid5(Uuid::NAMESPACE_DNS, 'php.net');
    echo $uuid5->toString() . "\n"; // i.e. c4a760a8-dbcf-5254-a0d9-6a4474bd1b62

} catch (UnsatisfiedDependencyException $e) {

    // Some dependency was not met. Either the method cannot be called on a
    // 32-bit system, or it can, but it relies on Moontoast\Math to be present.
    echo 'Caught exception: ' . $e->getMessage() . "\n";

}

贡献

欢迎贡献!请阅读CONTRIBUTING以获取详细信息。

版权和许可

ramsey/uuid库的版权© Ben Ramsey,并许可在MIT许可证(MIT)下使用。请参阅LICENSE以获取更多信息。