benji/public-id

Laravel 的简单 ID 混淆。由 hashids 提供支持

1.0.1 2015-08-16 22:19 UTC

This package is not auto-updated.

Last update: 2024-09-23 09:54:44 UTC


README

为您的 Laravel 项目生成简单自动的短 ID 生成器(如 YouTube ID)。由 Hashids 项目(和 malahierba 开发团队)提供支持

安装

在 composer.json 中添加:

{
    "require": {
        "malahierba-lab/public-id": "1.*"
    }
}

然后运行 composer update 命令。

非常重要:在 composer.json 中使用 "1.*" 语法,而不是 ">1"。如果在未来版本中我们更改转换工具,您可能会丢失旧的公共 ID 值。为了防止这种情况,请始终保持在同一主版本中。

使用

在 Public ID 安装后,您必须将特质添加到任何您希望获得公共 ID 功能的模型中。

例如对于 Post 模型

<?php namespace App;

use Illuminate\Database\Eloquent\Model;
use Malahierba\PublicId\PublicId;

class Post extends Model {
	use PublicId;
	
	//your code...

之后,您可以为 publicID 设置静态变量以定义设置: public_id_saltpublic_id_min_lengthpublic_id_alphabet,在上面的示例中

<?php namespace App;

use Illuminate\Database\Eloquent\Model;
use Malahierba\PublicId\PublicId;

class Post extends Model {
	use PublicId;
	
	static protected $public_id_salt = 'some_string_for_salt_your_ids';

    static protected $public_id_min_length = 6; // min length for your generated short ids.
    
    static protected $public_id_alphabet = 'ABCDEFGHIJKLM'; // Only letters A-M
	
	//your code...

有 4 个预定义的字母表可供使用。将 public_id_alphabet 变量设置为 upper_alphanumericupper_alphalower_alphanumericlower_alpha 将使用这些预定义的字母表

upper_alphanumeric => ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789
upper_alpha => ABCDEFGHIJKLMNOPQRSTUVWXYZ
lower_alphanumeric => abcdefghijklmnopqrstuvwxyz0123456789
lower_alpha => abcdefghijklmnopqrstuvwxyz

这就完成了。现在您可以在 Post 模型中使用 Public ID 功能

获取模型的公共 ID(即短 ID)

$short_id =  $post->public_id;

根据公共 ID 字符串获取模型

$post = Post::findByPublicId($public_id);

使用公共 ID 字符串获取原始 ID

$original_id = Post::publicIdDecode($public_id);

大数字

默认情况下可以管理的最大 ID 是一百亿(1.000.000.000)。但,这取决于您的环境,这个数字可能会更大。要测试您环境中最大 ID 的设置,您可以使用 testPublicIdMaxInt 函数

$max_id = Post::testPublicIdMaxInt();

许可证

此项目拥有 MIT 许可证。有关更多信息,请阅读 LICENCE 文件。