PHP code example of isszz / think-hashids

1. Go to this page and download the library: Download isszz/think-hashids library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

isszz / think-hashids example snippets


return [
    // 默认连接名称
    'default' => 'main', // 支持bilibili的BV模式

    // Hashids modes
    'modes' => [
        'main' => [
            'salt' => '',
            'length' => 0,
        ],
        'other' => [
            'salt' => 'salt',
            'length' => 0,
            'alphabet' => 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890'
        ],
        'bilibili' => [
            // 此模式无需添加其他的配置
            // 前缀超过2位英文字母忽略
            'prefix' => ['', ''], // B站BV模式前缀类似: BV1fx411v7eo = 12345678
        ],
    ],
];


use isszz\hashids\facade\Hashids;

class Index
{
    public function index()
    {
        // B站BV模式, B站模式支持第二个参数增加前缀,可以设置例如: prefix = 'BV'
        Hashids::mode('bilibili')->encode(12345678); // 1fx411v7eo
        Hashids::mode('bilibili')->decode('1fx411v7eo'); // 12345678

        // other模式
        Hashids::mode('other')->encode(12345678); // gpyAoR
        Hashids::mode('other')->decode('gpyAoR'); // 12345678

        // 默认
        Hashids::encode(12345678); // 1rQ2go
        Hashids::decode('1rQ2go'); // 12345678

        // 更改默认模式为bilibili
        Hashids::setDefaultMode('bilibili');

        Hashids::encode(12345678); // 1fx411v7eo
        Hashids::decode('1rQ2go'); // 12345678

        // 其他传输ID的方式,返回为数组,对应传参
        Hashids::encode(12, 34, 56, 78); // nyILSjosbR
        $hashID = Hashids::encode([12, 34, 56, 78]); // nyILSjosbR
        
        $result = Hashids::decode($hashID);
        // 返回数组,对应传入参数
        /*
        $result = [
            '0' => 12
            '1' => 34
            '2' => 56
            '3' => 78
        ];
        */ 
    }
}



use isszz\hashids\Hashids;

class Index
{
    public function index(Hashids $hashids)
    {
        // B站BV模式, B站模式支持第二个参数增加前缀,可以设置例如: prefix = 'BV'
        $hashids->mode('bilibili')->encode(12345678); // 1fx411v7eo
        $hashids->mode('bilibili')->decode('1fx411v7eo'); // 12345678

        // other模式
        $hashids->mode('other')->encode(12345678); // gpyAoR
        $hashids->mode('other')->decode('gpyAoR'); // 12345678

        // 默认
        $hashids->encode(12345678); // 1rQ2go
        $hashids->decode('1rQ2go'); // 12345678

        // 更改默认模式为bilibili
        $hashids->setDefaultMode('bilibili');
    }
}


class Index
{
    public function index()
    {
        // 加密
        id_encode(12345678); // 1rQ2go
        id_encode(12, 34, 56, 78, 'other'); // nyILSjosbR
        id_encode([12, 34, 56, 78], mode: 'other'); // nyILSjosbR

        // 解密
        id_decode('1rQ2go'); // 12345678
        id_decode('gpyAoR', 'other'); // 12345678

        // 切换模式
        id_mode('other')->encode(12345678); // gpyAoR
        id_mode('other')->decode('gpyAoR'); // 12345678

        // 助手函数还有一个获取字母表的函数
        // 拿到可以用来设置`config/plugin/isszz/webman-hashids/app.php `配置中的alphabet字段
        $alphabet = id_build_alphabet();
    }
}


public function getIdAttr($value)
{
    return id_encode($value);
}

// 主键非id时, 比如是tid时
public function getTidAttr($value)
{
    return id_encode($value);
}