ElfSundae\Laravel\Hashid\HashidServiceProvider::class
Hashid 的配置文件和 Laravel 框架的众多管理 (manager) 服务的配置极其类似,例如数据库、缓存、队列等。所以无需花费额外时间来学习如何配置它。
我们来看个例子:
'default' => 'id',
'connections' => [
'basic' => [
'driver' => 'base64',
],
'hashids' => [
'driver' => 'hashids',
'salt' => 'sweet girl',
],
'id' => [
'driver' => 'hashids_integer',
'salt' => 'My Application',
'min_length' => 6,
'alphabet' => '1234567890abcdef',
],
'base62' => [
'driver' => 'base62',
'characters' => 'f9FkqDbzmn0QRru7PBVeGl5pU28LgIvYwSydK41sCO3htaicjZoWAJNxH6EMTX',
],
],
hashid_encode(123456); // "xkNDJ"
hashid_decode('xkNDJ'); // 123456
hashid_encode(123456, 'optimus'); // 1101845824
hashid_decode(1101845824, 'optimus'); // 123456
hashid_encode(123456, 'base62'); // "W7E"
hashid_encode('123456', 'base62'); // "FMJUCzH4"
hashid_decode('W7E', 'base62_integer'); // 123456
<?php
namespace App\Hashid;
use ElfSundae\Laravel\Hashid\DriverInterface;
use Illuminate\Contracts\Encryption\Encrypter;
class CustomDriver implements DriverInterface
{
protected $encrypter;
protected $serialize;
public function __construct(Encrypter $encrypter, array $config = [])
{
$this->encrypter = $encrypter;
$this->serialize = $config['serialize'] ?? false;
}
public function encode($data)
{
return $this->encrypter->encrypt($data, $this->serialize);
}
public function decode($data)
{
return $this->encrypter->decrypt($data, $this->serialize);
}
}
'connections' => [
'custom' => [
'driver' => App\Hashid\CustomDriver::class,
'serialize' => false,
],
// ...
]
hashid_encode(123456, 'custom');
$this->app->bind('hashid.driver.custom', CustomDriver::class);
10 Comments