b374k
m1n1 1.01
Apache/2.4.41 (Ubuntu)
Linux vmi616275.contaboserver.net 5.4.0-84-generic #94-Ubuntu SMP Thu Aug 26 20:27:37 UTC 2021 x86_64
uid=33(www-data) gid=33(www-data) groups=33(www-data)
server ip : 62.171.164.128 | your ip : 127.0.0.1
safemode OFF
 >  / home / a / home / dev2.destoffenstraat.com / update / vendor / phpunit / phpunit / src / Util /
Filename/home/a/home/dev2.destoffenstraat.com/update/vendor/phpunit/phpunit/src/Util/Json.php
Size2.46 kb
Permissionrw-r--r--
Ownerroot : root
Create time21-Aug-2025 12:26
Last modified06-Apr-2021 18:06
Last accessed23-Aug-2025 02:38
Actionsedit | rename | delete | download (gzip)
Viewtext | code | image
<?php
/*
* This file is part of PHPUnit.
*
* (c) Sebastian Bergmann <sebastian@phpunit.de>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/

namespace PHPUnit\Util;

use PHPUnit\Framework\Exception;

final class Json
{
/**
* Prettify json string
*
* @param string $json
*
* @throws \PHPUnit\Framework\Exception
*
* @return string
*/
public static function prettify(string $json): string
{
$decodedJson = \json_decode($json, true);

if (\json_last_error()) {
throw new Exception(
'Cannot prettify invalid json'
);
}

return \json_encode($decodedJson, JSON_PRETTY_PRINT);
}

/*
* To allow comparison of JSON strings, first process them into a consistent
* format so that they can be compared as strings.
* @return array ($error, $canonicalized_json) The $error parameter is used
* to indicate an error decoding the json. This is used to avoid ambiguity
* with JSON strings consisting entirely of 'null' or 'false'.
*/
public static function canonicalize(string $json): array
{
$decodedJson = \json_decode($json);

if (\json_last_error()) {
return [true, null];
}

self::recursiveSort($decodedJson);

$reencodedJson = \json_encode($decodedJson);

return [false, $reencodedJson];
}

/*
* JSON object keys are unordered while PHP array keys are ordered.
* Sort all array keys to ensure both the expected and actual values have
* their keys in the same order.
*/
private static function recursiveSort(&$json): void
{
if (\is_array($json) === false) {
// If the object is not empty, change it to an associative array
// so we can sort the keys (and we will still re-encode it
// correctly, since PHP encodes associative arrays as JSON objects.)
// But EMPTY objects MUST remain empty objects. (Otherwise we will
// re-encode it as a JSON array rather than a JSON object.)
// See #2919.
if (\is_object($json) && \count((array) $json) > 0) {
$json = (array) $json;
} else {
return;
}
}

\ksort($json);

foreach ($json as $key => &$value) {
self::recursiveSort($value);
}
}
}