sessionless-1.x-dev/src/Serialization/JsonSafeCompressedPhpSerialization.php
src/Serialization/JsonSafeCompressedPhpSerialization.php
<?php
declare(strict_types=1);
namespace Drupal\sessionless\Serialization;
final class JsonSafeCompressedPhpSerialization implements JsonSafeCompressingObjectAwareSerializationInterface {
public static function encode($data) {
$serialized = serialize($data);
// Max compression, with no metadata overhead.
$serializedCompressed = gzdeflate($serialized, level: 9)
?: new \UnexpectedValueException('Compression error.');
$serializedCompressedBase64 = base64_encode($serializedCompressed);
return $serializedCompressedBase64;
}
public static function decode($raw) {
$serializedCompressed = base64_decode($raw)
?: new \UnexpectedValueException('Base64 decode error.');
$serialized = gzinflate($serializedCompressed)
?: new \UnexpectedValueException('Gzip inflate error.');
return unserialize($serialized);
}
public static function getFileExtension() {
return 'serialized.gzdeflate.b64';
}
}
