public static function chooseEncoder($chosen, bool $decode = false)
{
if ($chosen === true) {
return null;
} elseif ($chosen === false) {
return \implode('::', [Hex::class, $decode ? 'decode' : 'encode']);
} elseif ($chosen === self::ENCODE_BASE32) {
return \implode('::', [Base32::class, $decode ? 'decode' : 'encode']);
} elseif ($chosen === self::ENCODE_BASE32HEX) {
return \implode('::', [Base32Hex::class, $decode ? 'decode' : 'encode']);
} elseif ($chosen === self::ENCODE_BASE64) {
return \implode('::', [Base64::class, $decode ? 'decode' : 'encode']);
} elseif ($chosen === self::ENCODE_BASE64URLSAFE) {
return \implode('::', [Base64UrlSafe::class, $decode ? 'decode' : 'encode']);
} elseif ($chosen === self::ENCODE_HEX) {
return \implode('::', [Hex::class, $decode ? 'decode' : 'encode']);
}
throw new InvalidType('Illegal value for encoding choice.');
}