malahierba-lab/public-id

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

1.0.1 2015-08-16 22:19 UTC

This package is not auto-updated.

Last update: 2024-09-12 00:39:34 UTC


README

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

安装

在composer.json中添加

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

然后您需要运行composer update命令。

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

使用

在Public ID安装完成后,您必须将特质添加到任何希望获得public 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功能

获取模型的Public 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文件。