00f100/uuid

A PHP 5.3+ library for generating RFC 4122 version 1, 3, 4, and 5 universally unique identifiers (UUID)。

4.0.0 2015-09-06 19:03 UTC

README

Build Status Coverage Status Latest Stable Version Latest Unstable Version Total Downloads HHVM Status

关于

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

来源 维基百科

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

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

API 文档

最新的类 API 文档可以在网上找到。此项目使用 ApiGen 生成此文档。要生成自己的文档,请在项目的根目录下运行 apigen。这将生成位于 build/apidocs/ 文件夹中的文档。

要求

由于 32 位和 64 位 PHP 构建对整数大小的限制,此库中的一些方法有要求。建议使用 64 位 PHP 构建和 Moontoast\Math 库。但是,此库旨在在没有 Moontoast\Math 的情况下在 32 位 PHP 构建上运行,但功能会降低。请查阅 API 文档以获取更多信息。

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

示例

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

use Rhumsaa\Uuid\Uuid;
use Rhumsaa\Uuid\Exception\UnsatisfiedDependencyException;

try {

    // Generate a version 1 (time-based) UUID object
    $uuid1 = Uuid::uuid1();
    echo $uuid1->toString() . "\n"; // 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"; // 11a38b9a-b3da-360f-9353-a5a725514269

    // Generate a version 4 (random) UUID object
    $uuid4 = Uuid::uuid4();
    echo $uuid4->toString() . "\n"; // 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"; // 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";

}

安装

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

composer.phar require "ramsey/uuid=~2.8"