klionchu / laravel-uuid
Laravel 包,用于生成和验证符合 RFC 4122 标准的通用唯一标识符 (UUID)。内置支持版本 1、3、4 和 5 的 UUID。
Requires
- php: ^7.0|^8.0|^8.1|^8.2
Requires (Dev)
- fakerphp/faker: ^1.9.1
- phpunit/phpunit: ^9.3.3
This package is auto-updated.
Last update: 2024-09-20 07:16:09 UTC
README
Laravel 包,用于生成和验证符合 RFC 4122 标准的通用唯一标识符 (UUID)。内置支持版本 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 "klongchu/laravel-uuid:^3.0"
安装后,您应该会看到
Discovered Package: klongchu/laravel-uuid
然后您就可以开始了
基本用法
要快速生成一个 UUID,只需这样做
Uuid::generate()
这将生成一个带有随机生成的 MAC 地址的版本 1 Uuid 对象
。
要输出生成的 UUID,将其转换为字符串
(string) Uuid::generate()
或
Uuid::generate()->string
高级用法
UUID 创建
生成一个基于时间的版本 1 UUID。您可以设置可选的节点为 MAC 地址。如果未提供,它将生成一个随机 MAC 地址。
Uuid::generate(1,'00:11:22:33:44:55');
生成一个基于名称的版本 3 UUID,使用 MD5 哈希。
Uuid::generate(3,'test', Uuid::NS_DNS);
生成一个版本 4 的真正随机 UUID。
Uuid::generate(4);
生成一个基于名称的版本 5 UUID,使用 SHA-1 哈希。
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,只需将此 boot 方法添加到您的模型中。
/** * Setup model event hooks */ public static function boot() { parent::boot(); self::creating(function ($model) { $model->uuid = (string) Uuid::generate(4); }); }
这将在新记录创建时生成版本 4 UUID。
将模型绑定到 UUID 而不是主键
如果您想将 UUID 用于 URL 而不是主键,您可以将此添加到您的模型中(其中 '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 上找到。