guava/sqids-for-laravel

这是一个sqids的Laravel包装器。

1.1.1 2024-08-27 13:07 UTC

This package is auto-updated.

Last update: 2024-08-27 13:07:58 UTC


README

sqids-for-laravel Banner

Sqids的Laravel包装器

Latest Version on Packagist GitHub Tests Action Status Total Downloads

Laravel包装器为sqids.org PHP库。

支持我们

您的支持对我们插件持续发展至关重要。我们感谢每一位至今为止为我们的旅程做出贡献的用户。

虽然我们的插件对所有用户免费,但如果您将其用于商业用途并且认为它为您的业务增加了显著价值,我们诚恳地请求您考虑通过GitHub Sponsors支持我们。这种赞助将帮助我们进行持续开发和维护,以确保我们的插件强大且保持最新。您提供的任何金额都将极大地帮助我们实现目标。加入我们,让这个插件变得更好,推动进一步的创新。

安装

您可以通过composer安装此包

composer require guava/sqids-for-laravel

使用

此包添加了稍作修改的Sqids类版本,允许流畅配置所有选项。它还添加了盐值选项。

生成Sqids

您可以使用多种方式使用此包生成sqids

// Via our Facade
use Guava\Sqids\Facades\Sqids;

Sqids::encode([1,2,3]); /// Outputs '86Rf07'



// Via a classic instance
use Guava\Sqids\Sqids;
$sqids = new Sqids();
$sqids->encode([1,2,3]); /// Outputs '86Rf07'



// Via the app container / dependency injection
use Guava\Sqids\Sqids;
app(Sqids::class)->encode([1,2,3]); /// Outputs '86Rf07'



// Via our factory method, which simply returns an instance of Sqids
// The factory method is also available on the facade class
use Guava\Sqids\Sqids;
Sqids::make()->encode([1,2,3]);

完全取决于您的选择。在我们的示例中,我们将使用工厂方法。

在Eloquent模型中使用

此包还附带一个特质,您可以在Eloquent模型中使用。此特质将自动添加一个sqid属性,该属性将根据模型的主键创建。

use \Illuminate\Database\Eloquent\Model;
use \Guava\Sqids\Concerns\HasSqids;

class YourModel extends Model {
    use HasSqids;
    
    // ...
}

这就完成了!现在您可以在模型上访问sqid属性。

您可以通过重写getSqids方法来自定义模型上sqid的生成方式

use \Illuminate\Database\Eloquent\Model;
use \Guava\Sqids\Concerns\HasSqids;
use \Guava\Sqids\Sqids;

class YourModel extends Model {
    use HasSqids;
    
    // ...
    
    protected function getSqids(): Sqids
    {
        return Sqids::make()
            ->salt() // This will use the model's class name as the salt, so every model generates different IDs
             // ... add more options here
        );
    }
}

路由绑定

如果您想使用sqid作为路由键,只需将HasSqidsRouting特质添加到您的模型中

use \Illuminate\Database\Eloquent\Model;
use \Guava\Sqids\Concerns\HasSqids;
use \Guava\Sqids\Concerns\HasSqidsRouting;

class YourModel extends Model {
    use HasSqids, HasSqidsRouting;
    
    // ...
}

选项

自定义字母表

use Guava\Sqids\Sqids;

Sqids::make()
->alphabet('0123456789abcdef')
->encode([1,2,3]); /// Outputs 'c9bf67'

自定义最小长度

use Guava\Sqids\Sqids;

Sqids::make()
->minLength('8')
->encode([1,2,3]); /// Outputs '86Rf07xd'

自定义黑名单

use Guava\Sqids\Sqids;

Sqids::make()
->blocklist(['86Rf07'])
->encode([1,2,3]); /// Outputs 'se8ojk'

盐值

盐值可以用于根据提供的盐值生成不同的ID,这可以是任何字符串或整数。

use Guava\Sqids\Sqids;

Sqids::make()
->salt('my-salt')
->encode([1,2,3]); /// Outputs 'rx035W'

盐值在用于具有HasSqids特质的模型时特别有用,您希望每个模型返回不同的唯一ID。

例如,ID为1的Model1记录的sqid与ID为1的Model2记录的sqid不同。

use \Illuminate\Database\Eloquent\Model;
use \Guava\Sqids\Concerns\HasSqids;
use \Guava\Sqids\Sqids;

class YourModel extends Model {
    use HasSqids;
    
    // ...
    
    protected function getSqids(): Sqids
    {
        return Sqids::make()
            ->salt() // This will use the model's class name as the salt, so every model generates different IDs
        );
    }
}

变更日志

请参阅变更日志以获取有关最近更改的更多信息。

贡献

请参阅贡献指南以获取详细信息。

安全漏洞

请参阅我们的安全策略以了解如何报告安全漏洞。

鸣谢

许可证

MIT许可证(MIT)。请参阅许可证文件以获取更多信息。