[HttpFoundation] work around PHP 7.3 bug related to json_encode()
This commit is contained in:
parent
5498cf559c
commit
e6e63017f0
@ -185,6 +185,12 @@ class JsonDescriptor extends Descriptor
|
|||||||
private function writeData(array $data, array $options)
|
private function writeData(array $data, array $options)
|
||||||
{
|
{
|
||||||
$flags = isset($options['json_encoding']) ? $options['json_encoding'] : 0;
|
$flags = isset($options['json_encoding']) ? $options['json_encoding'] : 0;
|
||||||
|
|
||||||
|
if (\PHP_VERSION_ID >= 70300 && (JSON_THROW_ON_ERROR & $flags)) {
|
||||||
|
// Work around https://bugs.php.net/77997
|
||||||
|
json_encode(null);
|
||||||
|
}
|
||||||
|
|
||||||
$this->write(json_encode($data, $flags | JSON_PRETTY_PRINT)."\n");
|
$this->write(json_encode($data, $flags | JSON_PRETTY_PRINT)."\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -97,7 +97,14 @@ class JsonDescriptor extends Descriptor
|
|||||||
*/
|
*/
|
||||||
private function writeData(array $data, array $options)
|
private function writeData(array $data, array $options)
|
||||||
{
|
{
|
||||||
$this->write(json_encode($data, isset($options['json_encoding']) ? $options['json_encoding'] : 0));
|
$flags = isset($options['json_encoding']) ? $options['json_encoding'] : 0;
|
||||||
|
|
||||||
|
if (\PHP_VERSION_ID >= 70300 && (JSON_THROW_ON_ERROR & $flags)) {
|
||||||
|
// Work around https://bugs.php.net/77997
|
||||||
|
json_encode(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->write(json_encode($data, $flags));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -82,6 +82,12 @@ class JsonDescriptor extends Descriptor
|
|||||||
private function writeData(array $data, array $options)
|
private function writeData(array $data, array $options)
|
||||||
{
|
{
|
||||||
$flags = isset($options['json_encoding']) ? $options['json_encoding'] : 0;
|
$flags = isset($options['json_encoding']) ? $options['json_encoding'] : 0;
|
||||||
|
|
||||||
|
if (\PHP_VERSION_ID >= 70300 && (JSON_THROW_ON_ERROR & $flags)) {
|
||||||
|
// Work around https://bugs.php.net/77997
|
||||||
|
json_encode(null);
|
||||||
|
}
|
||||||
|
|
||||||
$this->output->write(json_encode($data, $flags | JSON_PRETTY_PRINT)."\n");
|
$this->output->write(json_encode($data, $flags | JSON_PRETTY_PRINT)."\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -153,6 +153,11 @@ class JsonResponse extends Response
|
|||||||
restore_error_handler();
|
restore_error_handler();
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
if (\PHP_VERSION_ID >= 70300 && (JSON_THROW_ON_ERROR & $this->encodingOptions)) {
|
||||||
|
// Work around https://bugs.php.net/77997
|
||||||
|
json_encode(null);
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$data = json_encode($data, $this->encodingOptions);
|
$data = json_encode($data, $this->encodingOptions);
|
||||||
} catch (\Exception $e) {
|
} catch (\Exception $e) {
|
||||||
|
@ -36,6 +36,11 @@ class JsonEncode implements EncoderInterface
|
|||||||
{
|
{
|
||||||
$context = $this->resolveContext($context);
|
$context = $this->resolveContext($context);
|
||||||
|
|
||||||
|
if (\PHP_VERSION_ID >= 70300 && (JSON_THROW_ON_ERROR & $context['json_encode_options'])) {
|
||||||
|
// Work around https://bugs.php.net/77997
|
||||||
|
json_encode(null);
|
||||||
|
}
|
||||||
|
|
||||||
$encodedJson = json_encode($data, $context['json_encode_options']);
|
$encodedJson = json_encode($data, $context['json_encode_options']);
|
||||||
|
|
||||||
if (JSON_ERROR_NONE !== json_last_error() && (false === $encodedJson || !($context['json_encode_options'] & JSON_PARTIAL_OUTPUT_ON_ERROR))) {
|
if (JSON_ERROR_NONE !== json_last_error() && (false === $encodedJson || !($context['json_encode_options'] & JSON_PARTIAL_OUTPUT_ON_ERROR))) {
|
||||||
|
@ -31,6 +31,11 @@ class JsonFileDumper extends FileDumper
|
|||||||
$flags = \defined('JSON_PRETTY_PRINT') ? JSON_PRETTY_PRINT : 0;
|
$flags = \defined('JSON_PRETTY_PRINT') ? JSON_PRETTY_PRINT : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (\PHP_VERSION_ID >= 70300 && (JSON_THROW_ON_ERROR & $flags)) {
|
||||||
|
// Work around https://bugs.php.net/77997
|
||||||
|
json_encode(null);
|
||||||
|
}
|
||||||
|
|
||||||
return json_encode($messages->all($domain), $flags);
|
return json_encode($messages->all($domain), $flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user