ParagonIE\Halite\Halite::chooseEncoder PHP Method

chooseEncoder() public static method

Select which encoding/decoding function to use.
public static chooseEncoder ( mixed $chosen, boolean $decode = false ) : callable
$chosen mixed
$decode boolean
return callable (array or string)
    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.');
    }

Usage Example

Example #1
-1
 public function testEncoding()
 {
     $random_bytes = \random_bytes(31);
     // Backwards compatibility:
     $encoder = Halite::chooseEncoder(false);
     $this->assertSame(Hex::encode($random_bytes), $encoder($random_bytes));
     $encoder = Halite::chooseEncoder(true);
     $this->assertSame(null, $encoder);
     // New encoding in version 3:
     $encoder = Halite::chooseEncoder(Halite::ENCODE_HEX);
     $this->assertSame(Hex::encode($random_bytes), $encoder($random_bytes));
     $encoder = Halite::chooseEncoder(Halite::ENCODE_BASE32);
     $this->assertSame(Base32::encode($random_bytes), $encoder($random_bytes));
     $encoder = Halite::chooseEncoder(Halite::ENCODE_BASE32HEX);
     $this->assertSame(Base32Hex::encode($random_bytes), $encoder($random_bytes));
     $encoder = Halite::chooseEncoder(Halite::ENCODE_BASE64);
     $this->assertSame(Base64::encode($random_bytes), $encoder($random_bytes));
     $encoder = Halite::chooseEncoder(Halite::ENCODE_BASE64URLSAFE);
     $this->assertSame(Base64UrlSafe::encode($random_bytes), $encoder($random_bytes));
 }