74 lines
1.9 KiB
PHP
74 lines
1.9 KiB
PHP
|
<?php
|
||
|
|
||
|
namespace Safe;
|
||
|
|
||
|
use Safe\Exceptions\JsonException;
|
||
|
|
||
|
/**
|
||
|
* Returns a string containing the JSON representation of the supplied
|
||
|
* value.
|
||
|
*
|
||
|
* The encoding is affected by the supplied options
|
||
|
* and additionally the encoding of float values depends on the value of
|
||
|
* serialize_precision.
|
||
|
*
|
||
|
* @param mixed $value The value being encoded. Can be any type except
|
||
|
* a resource.
|
||
|
*
|
||
|
* All string data must be UTF-8 encoded.
|
||
|
*
|
||
|
* PHP implements a superset of JSON as specified in the original
|
||
|
* RFC 7159.
|
||
|
* @param int $options Bitmask consisting of
|
||
|
* JSON_FORCE_OBJECT,
|
||
|
* JSON_HEX_QUOT,
|
||
|
* JSON_HEX_TAG,
|
||
|
* JSON_HEX_AMP,
|
||
|
* JSON_HEX_APOS,
|
||
|
* JSON_INVALID_UTF8_IGNORE,
|
||
|
* JSON_INVALID_UTF8_SUBSTITUTE,
|
||
|
* JSON_NUMERIC_CHECK,
|
||
|
* JSON_PARTIAL_OUTPUT_ON_ERROR,
|
||
|
* JSON_PRESERVE_ZERO_FRACTION,
|
||
|
* JSON_PRETTY_PRINT,
|
||
|
* JSON_UNESCAPED_LINE_TERMINATORS,
|
||
|
* JSON_UNESCAPED_SLASHES,
|
||
|
* JSON_UNESCAPED_UNICODE,
|
||
|
* JSON_THROW_ON_ERROR.
|
||
|
* The behaviour of these constants is described on the
|
||
|
* JSON constants page.
|
||
|
* @param int $depth Set the maximum depth. Must be greater than zero.
|
||
|
* @return string Returns a JSON encoded string on success.
|
||
|
* @throws JsonException
|
||
|
*
|
||
|
*/
|
||
|
function json_encode($value, int $options = 0, int $depth = 512): string
|
||
|
{
|
||
|
error_clear_last();
|
||
|
$result = \json_encode($value, $options, $depth);
|
||
|
if ($result === false) {
|
||
|
throw JsonException::createFromPhpError();
|
||
|
}
|
||
|
return $result;
|
||
|
}
|
||
|
|
||
|
|
||
|
/**
|
||
|
* Returns the error string of the last json_encode or json_decode
|
||
|
* call, which did not specify JSON_THROW_ON_ERROR.
|
||
|
*
|
||
|
* @return string Returns the error message on success, "No error" if no
|
||
|
* error has occurred.
|
||
|
* @throws JsonException
|
||
|
*
|
||
|
*/
|
||
|
function json_last_error_msg(): string
|
||
|
{
|
||
|
error_clear_last();
|
||
|
$result = \json_last_error_msg();
|
||
|
if ($result === false) {
|
||
|
throw JsonException::createFromPhpError();
|
||
|
}
|
||
|
return $result;
|
||
|
}
|