trianity / laravel-sqids
为 Laravel 10,11 提供的 Hashids / Sqids 桥接器
Requires
- php: ^8.2|^8.3
- ext-bcmath: *
- illuminate/contracts: ^10.0|^11.0
- illuminate/support: ^10.0|^11.0
- sqids/sqids: ^0.4.1
Requires (Dev)
- larastan/larastan: ^2.9
- laravel/pint: ^1.5
- orchestra/testbench: ^8.5|^9.0
- pestphp/pest: ^2.9
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 中的文档。