guava / sqids-for-laravel
这是一个sqids的Laravel包装器。
1.1.1
2024-08-27 13:07 UTC
Requires
- php: ^8.2
- illuminate/contracts: ^10.0|^11.0
- spatie/laravel-package-tools: ^1.14.0
- sqids/sqids: ^0.4.1
Requires (Dev)
- laravel/pint: ^1.0
- nunomaduro/collision: ^7.8
- orchestra/testbench: ^8.8
- pestphp/pest: ^2.0
- pestphp/pest-plugin-arch: ^2.0
- pestphp/pest-plugin-laravel: ^2.0
README
Sqids的Laravel包装器
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 ); } }
变更日志
请参阅变更日志以获取有关最近更改的更多信息。
贡献
请参阅贡献指南以获取详细信息。
安全漏洞
请参阅我们的安全策略以了解如何报告安全漏洞。
鸣谢
- Lukas Frey
- 所有贡献者
- Spatie - 我们包骨架是Spatie的Package Skeleton的修改版本
- https://github.com/mtvs/eloquent-hashids
许可证
MIT许可证(MIT)。请参阅许可证文件以获取更多信息。