jasurbek97 / laravel-uuid
Laravel包,用于生成和验证遵循RFC 4122标准的通用唯一识别码(UUID)。内置对版本1、3、4和5 UUID的支持。
Requires
- php: ^7.0|^8.0
Requires (Dev)
- fakerphp/faker: ~1.12
- phpunit/phpunit: ~9.3.8
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 "jasurbek97/laravel-uuid:^4.0"
安装后,您应该看到
Discovered Package: jasurbek97/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');
生成基于MD5散列的版本3、基于名称的UUID
Uuid::generate(3,'test', Uuid::NS_DNS);
生成版本4、真正的随机UUID
Uuid::generate(4);
生成基于SHA-1散列的版本5、基于名称的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,只需将此boot方法添加到您的模型中。
/** * 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上找到。