amamarul / integer-hashids
Laravel Integers Hashids Generator. Encode and decode ids to Integers. Also generate prefixed hashids
Installs: 19 164
Dependents: 1
Suggesters: 0
Security: 0
Stars: 4
Watchers: 2
Forks: 5
Open Issues: 3
Type:package
This package is not auto-updated.
Last update: 2024-12-12 15:16:50 UTC
README
Make Integers Hashids
This package is an adaptation and combination of the following 3 packages:
- Laravel-Manager https://github.com/GrahamCampbell/Laravel-Manager
- Hashids https://github.com/ivanakimov/hashids.php
- Laravel Hashids https://github.com/vinkla/laravel-hashids
This package works like Laravel Hashids but you can make integers hashids placing in alphabet connections only numbers and you can implement prefix ids. Also you can use encode() and decode() helpers. You can also make alphanumeric Hashids
Installation
Composer require
$ composer require amamarul/integer-hashids
Add Provider into config/app.php
Amamarul\Hashids\HashidsServiceProvider::class,
Publish config file
$ php artisan vendor:publish --provider='Amamarul\Hashids\HashidsServiceProvider'
Usage
- Setup the Config file (
config/hashids.php
) You can create differents connections with differents parameters
'default' => 'main', 'prefix-separator' => '-', '<Name Connection>' => [ 'salt' => 'your-salt-string', 'length' => '10', 'alphabet' => '0123456789', 'prefix' => null, ],
-
Name Connection: There are a 'main' connection that is used by default but you can create custom connections and then call them.
-
salt: is a phrase string.
-
length: Number of characters you need
-
alphabet: you can set any character to make the hash, but if you want integer hashid keep the same ('0123456789').
-
prefix: if you want a prefixed hashid you can add the prefix, if not you can omit it or delete the parameter.
-
prefix-separator: If you use a prefix maybe do you want to use a prefix separator. If not leave empty ('').
-
default: you can change the default connection
- With 'main' connection and without 'prefix' (
'prefix' => null
)
use Hashids; Hashids::encode(1548); // output: 7988887798 Hashids::decode('7988887798'); // output: 1548
- With 'main' connection and with 'prefix' (
'prefix' => 'AA'
)
use Hashids; Hashids::encode(1548); // output: AA-7988887798 Hashids::decode('AA-7988887798'); // output: 1548
- With 'custom' name connection and with and without 'prefix'
use Hashids; Hashids::connection('custom')->encode(1548); // output: 7988887798 Hashids::connection('custom')->decode('7988887798'); // output: 1548
- If you prefer to use dependency injection over facades, you can inject the manager:
- With 'main' connection
use Amamarul\Hashids\Support\HashidsManager; class Foo { protected $hashids; public function __construct(HashidsManager $hashids) { $this->hashids = $hashids; } public function encode($id) { $this->hashids->encode($id) } public function decode($hashid) { $this->hashids->decode($hashid) } }
- With 'custom' connection
use Amamarul\Hashids\Support\HashidsManager; class Foo { protected $hashids; public function __construct(HashidsManager $hashids) { $this->hashids = $hashids->connection('custom'); } public function encode($id) { $this->hashids->encode($id) } public function decode($hashid) { $this->hashids->decode($hashid) } }
Helpers
You can use the 'encode()' and 'decode()' helpers
- encode()
// with 'main' connection encode($id) // with 'custom' connection encode($id,'custom')
- decode()
// with 'main' connection decode($hashid) // with 'custom' connection decode($hashid,'custom')
Feel free to send improvements
Created by Maru Amallo-amamarul