jvizcaya / encodid
Laravel 编码ID助手
Requires
- php: ^7.2|^8.0
- hashids/hashids: ^4.1
This package is auto-updated.
Last update: 2024-09-10 23:29:29 UTC
README
Encodid 为Laravel 5.7+提供编码和解码整数ID的助手,允许从我们的表格ID生成唯一的非序列文本字符串,这样我们可以在公开路由(URL)中显示生成的字符串而不是原始值,这样可以使路由更不可预测,从而为我们的应用程序添加一个额外的安全层。
Encodid 使用PHP库 Hashids 来编码和解码ID值,并受Laravel包 laravel-hashids 的启发。
安装
composer require jvizcaya/encodid
使用方法
正确安装包后,助手将在应用的任何地方可用。
编码值
要从ID值生成编码字符串,我们使用助手 encodeId()
,并需要传递要编码的ID值。
$id = 347; $encode_id = encodeId($id); // 3kTMdQl1zu
我们可以在视图中使用 encodeId()
助手或为我们的模型创建一个自定义的 Eloquent 访问器。
namespace App; use Illuminate\Database\Eloquent\Model; class Post extends Model { /** * Model Accessors. * * */ public function getEncodeidAttribute() { return encodeId($this->id); } }
这样我们就可以从模型对象本身获取编码字符串的值。
$post->encode_id; // LkTM1Ql1Xa
可选地,我们可以使用助手 encodeIds()
从ID数组生成编码字符串。
$ids = [14, 36, 89]; $encode_ids = encodeIds($ids); // o2fXhVWKlu
解码值
要恢复编码字符串的原始ID值,我们使用助手 decodeId()
,需要传递编码字符串的值。
$encode_id = '3kTMdQl1zu'; $id = decodeId($encode_id); // 347
助手 decodeIds()
允许我们使用 encodeIds()
函数恢复之前编码的ID数组的原始值。
$encode_ids = 'o2fXhVWKlu'; $ids = decodeIds($encode_ids); // [14, 36, 89]
有时我们可能需要解码编码字符串数组,对于这种情况,我们可以使用助手 decodeArrayIds()
。
$encode_ids = [o2fXhVWKlu, uLkmPqwr1u, QP13YuOp7T]; $ids = decodeArrayIds($encode_ids); // [42, 1935, 5456]
配置
我们可以通过发布配置文件来配置ID或ID数组的编码方式。
php artisan vendor:publish --provider="Jvizcaya\Encodid\EncodidServiceProvider"
这将在 config 目录中创建一个 encodid.php 文件,然后我们可以更改以下配置参数。
salt_string 将由hashids库用于编码的盐字符串。
length 编码字符串的长度。
format_string 编码字符串中可能出现的字母数字字符的模式。
许可证
MIT © Jorge Vizcaya | jorgevizcayaa@gmail.com