* @since 0.1.0 * * @link http://tools.ietf.org/html/rfc4648#section-5 */ class Encoder { /** * Encodes to JSON, validating the errors * * @param mixed $data * @return string * * @throws RuntimeException When something goes wrong while encoding */ public function jsonEncode($data) { if (PHP_VERSION_ID < 70300) { $json = json_encode($data); if (json_last_error() != JSON_ERROR_NONE) { throw CannotEncodeContent::jsonIssues(new JsonException(json_last_error_msg())); } return $json; } try { return json_encode($data, JSON_THROW_ON_ERROR); } catch (JsonException $exception) { throw CannotEncodeContent::jsonIssues($exception); } } /** * Encodes to base64url * * @param string $data * @return string */ public function base64UrlEncode($data) { return str_replace('=', '', strtr(base64_encode($data), '+/', '-_')); } }