* @license http://opensource.org/licenses/MIT MIT */ declare (strict_types=1); namespace DeliciousBrains\WP_Offload_Media\Gcp\Ramsey\Uuid\Fields; use ValueError; use function base64_decode; use function sprintf; use function strlen; /** * Provides common serialization functionality to fields * * @psalm-immutable */ trait SerializableFieldsTrait { /** * @param string $bytes The bytes that comprise the fields */ public abstract function __construct(string $bytes); /** * Returns the bytes that comprise the fields */ public abstract function getBytes() : string; /** * Returns a string representation of object */ public function serialize() : string { return $this->getBytes(); } /** * @return array{bytes: string} */ public function __serialize() : array { return ['bytes' => $this->getBytes()]; } /** * Constructs the object from a serialized string representation * * @param string $serialized The serialized string representation of the object * * @phpcsSuppress SlevomatCodingStandard.TypeHints.ParameterTypeHint.MissingNativeTypeHint * @psalm-suppress UnusedMethodCall */ public function unserialize($serialized) : void { if (strlen($serialized) === 16) { $this->__construct($serialized); } else { $this->__construct(base64_decode($serialized)); } } /** * @param array{bytes: string} $data */ public function __unserialize(array $data) : void { // @codeCoverageIgnoreStart if (!isset($data['bytes'])) { throw new ValueError(sprintf('%s(): Argument #1 ($data) is invalid', __METHOD__)); } // @codeCoverageIgnoreEnd $this->unserialize($data['bytes']); } }