trianity/laravel-sqids

为 Laravel 10,11 提供的 Hashids / Sqids 桥接器

11.0.2 2024-04-26 21:14 UTC

This package is auto-updated.

Last update: 2024-09-26 22:34:51 UTC


README

Sqids, Hashids 为 Laravel 提供的桥接器。

此包使用 sqids.org 创建的类。

从数字生成哈希值,例如 YouTube 或 Bitly。当您不希望向用户暴露数据库 ID 时,请使用 Sqids(hashids)。

Sqids(发音为“squids”)是一个小巧的库,允许您从数字生成唯一 ID。它适用于链接缩短、快速且安全的 ID 生成以及快速将 ID 解码回数字以进行数据库查找。

功能

  • 编码多个数字 - 从一个或多个非负数字生成短 ID
  • 快速解码 - 容易将 ID 解码回数字
  • 唯一 ID - 通过一次打乱字母表来生成唯一 ID
  • ID 填充 - 提供最小长度以使 ID 更一致
  • URL 安全 - 自动生成的 ID 不包含常见粗俗语言
  • 随机输出 - 顺序输入提供非连续的 ID

用例

适用于

  • 生成公开 URL 的 ID(例如:链接缩短)
  • 生成内部系统的 ID(例如:事件跟踪)
  • 解码以进行快速数据库查找(例如:通过主键)

不适用于

  • 敏感数据(这不是一个加密库)
  • 用户 ID(可以解码揭示用户数量)

注意

🚧 由于算法的设计,多个 ID 可以解码回相同的数字序列。如果您的设计中 ID 必须是规范化的,则必须手动重新编码解码的数字并检查生成的 ID 是否匹配。

// 编码整数。 Sqids::encode(4815162342); //结果: "kRN2UomKT9MV"

// 解码字符串。 Sqids::decode('1LLb3b4ck'); //结果: array [0 => 111843073722887]

// 其他示例。 $sqids = new SqidsFactory(); $sqids->encode(911); //结果: "tcOyJwvFCuKy"

安装

使用 Composer,在项目根目录中要求此包。

composer require trianity/laravel-sqids

配置

Laravel Sqids 无需任何配置。但您可以发布供应商资产

$ php artisan vendor:publish --tag=config-sqids 这将在您的应用中创建一个 config/sqids.php 文件,您可以修改它以设置配置。

使用

在这里,您可以看到一个您可能使用的此包的示例。

// 您可以在 config/app.php 中将其别名为。 use Trianity\Sqids\Facades\Sqids;

// 我们完成了 - 这有多简单,它只需要这样做! Sqids::encode(4815162342);

// 此示例很简单: Sqids::decode('wellthatsreallyahugething'); //结果: [0 => 9223372036854775807] Sqids::encode(9223372036854775807);

如果您更喜欢使用依赖注入而不是外观,则可以注入管理器

use Trianity\Sqids\SqidsFactory;

class Foo
{
    protected $sqids;

    public function __construct(SqidsFactory $sqids)
    {
        $this->sqids = $sqids;
    }

    public function bar(array $id)s
    {
        $this->sqids->encode($ids);
    }
}

App::make('Foo')->bar();

有关如何使用 Sqids\Sqids 类的更多信息,请参阅 sqids/sqids 中的文档。