flynowpaylater/laravel-uuid

根据RFC 4122标准生成和验证通用唯一识别码(UUID)的Laravel包。内置支持版本1、3、4和5的UUID。

dev-master 2023-04-13 10:53 UTC

This package is not auto-updated.

Last update: 2024-09-27 15:25:27 UTC


README

Total Downloads Build Status codecov.io Latest Stable Version Licence

根据RFC 4122标准生成和验证通用唯一识别码(UUID)的Laravel包。内置支持版本1、3、4和5的UUID。

4.*版本中的新功能

Laravel-uuid现在已为Laravel 8做好准备。它具有相同的依赖关系,这意味着PHP 7.3或PHP 8。启用了Laravel包自动发现,您现在可以使用UUID验证。验证示例如下和在测试中。

对于较旧的Laravel或PHP版本,请使用较旧版本;见下文...

3.*版本中的新功能

Laravel-uuid现在已重构以支持Laravel 5.5。它具有相同的依赖关系,这意味着PHP 7。启用了Laravel包自动发现,您现在可以使用UUID验证。验证示例如下和在测试中。

Laravel 5.0、5.1、5.2、5.3和5.4?请使用 版本 2

Laravel 4.*?请使用 版本 1

安装

在Laravel 5.5中,laravel-uuid将通过新的包发现功能进行安装,因此您只需将包添加到您的composer.json文件中

composer require "webpatser/laravel-uuid:^3.0"

安装后,您应该看到

Discovered Package: webpatser/laravel-uuid

然后您就可以使用了

基本用法

要快速生成一个UUID,只需这样做

Uuid::generate()

这将生成一个版本1的Uuid 对象,其中包含随机生成的MAC地址。

要输出生成的UUID,将其转换为字符串

(string) Uuid::generate()

Uuid::generate()->string

高级用法

UUID创建

生成版本1、基于时间的UUID。您可以设置可选节点为MAC地址。如果没有提供,将生成随机MAC地址。

Uuid::generate(1,'00:11:22:33:44:55');

生成版本3、基于名称并使用MD5散列的UUID

Uuid::generate(3,'test', Uuid::NS_DNS);

生成版本4、真正随机的UUID

Uuid::generate(4);

生成版本5、基于名称并使用SHA-1散列的UUID

Uuid::generate(5,'test', Uuid::NS_DNS);

一些神奇的功能

导入UUID

$uuid = Uuid::import('d3d29d70-1d25-11e3-8591-034165a3a613');

提取基于时间的UUID(版本1)的时间

$uuid = Uuid::generate(1);
dd($uuid->time);

提取UUID的版本

$uuid = Uuid::generate(4);
dd($uuid->version);

Eloquent UUID生成

如果您希望在您的Laravel模型中自动生成UUID,只需将此启动方法添加到您的模型中。

/**
 *  Setup model event hooks
 */
public static function boot()
{
    parent::boot();
    self::creating(function ($model) {
        $model->uuid = (string) Uuid::generate(4);
    });
}

这将在新记录创建时生成版本4 UUID。

将模型绑定到UUID而不是主键

如果您希望在URL中使用UUID而不是主键,可以在您的模型中添加此内容(其中'uuid'是存储UUID的列名)

/**
 * Get the route key for the model.
 *
 * @return string
 */
public function getRouteKeyName()
{
    return 'uuid';
}

在您的资源控制器方法中注入模型时,您将获得正确的记录

public function edit(Model $model)
{
   return view('someview.edit')->with([
        'model' => $model,
    ]);
}

验证

就像使用其他任何Laravel验证器一样。

'uuid-field' => 'uuid'

或从头创建验证器。在示例中验证了Uuid对象。您还可以验证字符串 $uuid->string、URN $uuid->urn 或二进制值 $uuid->bytes

$uuid = Uuid::generate();
$validator = Validator::make(['uuid' => $uuid], ['uuid' => 'uuid']);
dd($validator->passes());

注意

UUID规范的完整详细信息可在http://tools.ietf.org/html/rfc4122上找到。