Skip to content

Latest commit

 

History

History
87 lines (57 loc) · 1.91 KB

README.md

File metadata and controls

87 lines (57 loc) · 1.91 KB

Encoder

License

Overview

Encodes and decodes arbitrary strings to and from Base62, the alphabet of digits and lower and upper case letters, which keeps the encoded value compact and safe in a URL. It backs the identifiers of ksuid.

Installation

composer require tiny-blocks/encoder

How to use

The library provides concrete implementations of the Encoder interface, enabling encoding and decoding of data into specific formats like Base62.

Using Base62

To encode a value into Base62 format:

<?php

declare(strict_types=1);

use TinyBlocks\Encoder\Base62;

$encoder = Base62::from(value: 'Hello world!');
$encoded = $encoder->encode();

# Output: T8dgcjRGuYUueWht

To decode a Base62-encoded value back to its original form:

<?php

declare(strict_types=1);

use TinyBlocks\Encoder\Base62;

$encoder = Base62::from(value: 'T8dgcjRGuYUueWht');
$decoded = $encoder->decode();

# Output: Hello world!

If you attempt to decode an invalid Base62 value, an InvalidDecoding exception will be thrown:

<?php

declare(strict_types=1);

use TinyBlocks\Encoder\Base62;
use TinyBlocks\Encoder\Exceptions\InvalidDecoding;

try {
    $encoder = Base62::from(value: 'invalid_value');
    $decoded = $encoder->decode();
} catch (InvalidDecoding $exception) {
    echo $exception->getMessage();
    # Output: The value <invalid_value> could not be decoded.
}

License

Encoder is licensed under MIT.

Contributing

Please follow the contributing guidelines to contribute to the project.