novay / laravel-uuid
Laravel包,用于根据RFC 4122标准生成和验证UUID。支持UUID版本1、3、4和5。
Requires
- php: >=7.0.0
Requires (Dev)
- fzaninotto/faker: ~1.4
- phpunit/phpunit: ~6.0
This package is auto-updated.
Last update: 2024-09-15 05:08:03 UTC
README
Laravel包,用于根据RFC 4122标准生成UUID。支持UUID版本1、3、4和5。采用MIT许可证。
关于
自从Laravel 4.*
和5.*
都依赖于OpenSSL
或Mcrypt
,伪随机字节生成器现在尝试使用其中之一。如果两者都不能使用(不是Laravel项目?),则使用'不太随机'的mt_rand()
函数。
要求
安装
Laravel 5.5及以上
- 在终端中从您的项目根目录运行
composer require novay/laravel-uuid
- 使用包自动发现功能,无需编辑
config/app.php
文件。
Laravel 5.4及以下
- 在终端中从您的项目根目录运行
composer require novay/laravel-uuid:2.0
- 在
config/app.php
中的aliases
下使用以下内容将包注册到laravel
'aliases' => [ 'Uuid' => Novay\Uuid\Uuid::class, ];
基本用法
要快速生成一个UUID,只需这样做
Uuid::generate()
- 这将生成一个具有随机生成的MAC地址的版本1。
要输出生成的UUID,将其转换为字符串
(string) Uuid::generate()
或
Uuid::generate()->string
高级用法
UUID创建
UUID V1
生成一个基于时间的版本1 UUID。您可以设置可选节点为MAC地址。如果没有提供,将生成一个随机MAC地址。
Uuid::generate(1,'00:11:22:33:44:55');
UUID V3
生成一个基于名称的版本3 UUID,使用MD5散列
Uuid::generate(3,'test', Uuid::NS_DNS);
UUID V4
生成一个版本4的真正随机的UUID
Uuid::generate(4);
UUID V5
生成一个基于名称的版本5 UUID,使用SHA-1散列
Uuid::generate(5,'test', Uuid::NS_DNS);
附加功能
导入UUID
- 要导入一个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规范的详细信息,请参阅此处
许可证
Laravel UUID采用MIT许可证许可,适用于个人和商业产品。祝您享受!