novay/laravel-uuid

Laravel包,用于根据RFC 4122标准生成和验证UUID。支持UUID版本1、3、4和5。

v3.0 2018-01-28 06:39 UTC

This package is auto-updated.

Last update: 2024-09-15 05:08:03 UTC


README

Total Downloads Build Status Latest Stable Version Latest Unstable Version License

Laravel包,用于根据RFC 4122标准生成UUID。支持UUID版本1、3、4和5。采用MIT许可证。

关于

自从Laravel 4.*5.*都依赖于OpenSSLMcrypt,伪随机字节生成器现在尝试使用其中之一。如果两者都不能使用(不是Laravel项目?),则使用'不太随机'的mt_rand()函数。

要求

安装

Laravel 5.5及以上
  1. 在终端中从您的项目根目录运行
    composer require novay/laravel-uuid
  • 使用包自动发现功能,无需编辑config/app.php文件。
Laravel 5.4及以下
  1. 在终端中从您的项目根目录运行
    composer require novay/laravel-uuid:2.0
  1. 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());

鸣谢

  • 全部开发信用应归功于webpatser。此包已被分叉并修改,以符合MIT许可证标准以用于生产。

注意

有关UUID规范的详细信息,请参阅此处

许可证

Laravel UUID采用MIT许可证许可,适用于个人和商业产品。祝您享受!