Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
26 / 26
100.00% covered (success)
100.00%
5 / 5
CRAP
100.00% covered (success)
100.00%
1 / 1
Json
100.00% covered (success)
100.00%
26 / 26
100.00% covered (success)
100.00%
5 / 5
13
100.00% covered (success)
100.00%
1 / 1
 parseFile
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
3
 verifyAndDecode
100.00% covered (success)
100.00%
6 / 6
100.00% covered (success)
100.00%
1 / 1
3
 decode
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
2
 verify
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
2
 encode
100.00% covered (success)
100.00%
7 / 7
100.00% covered (success)
100.00%
1 / 1
3
1<?php
2
3declare(strict_types=1);
4
5namespace Projom\Util;
6
7use Projom\Util\File;
8
9class Json
10{
11    public static function parseFile(string $fullFilePath): null|array
12    {
13        if (!$fullFilePath)
14            return null;
15
16        if (!$json = File::read($fullFilePath))
17            return null;
18
19        return static::verifyAndDecode($json);
20    }
21
22    public static function verifyAndDecode(string $jsonString, bool $asArray = true): null|array
23    {
24        if (!$jsonString)
25            return null;
26
27        $decoded = static::decode($jsonString, $asArray);
28
29        if (json_last_error() !== JSON_ERROR_NONE)
30            return null;
31
32        return $decoded;
33    }
34
35    public static function decode(string $jsonString, bool $asArray = true): null|array
36    {
37        if (!$jsonString)
38            return null;
39
40        $decoded = json_decode($jsonString, $asArray);
41        return $decoded;
42    }
43
44    public static function verify(string $jsonString): bool
45    {
46        if (!$jsonString)
47            return false;
48
49        static::decode($jsonString);
50        return json_last_error() === JSON_ERROR_NONE;
51    }
52
53    public static function encode(array $toEncode, bool $prettyPrint = false): null|string
54    {
55        $flags = 0;
56        if ($prettyPrint)
57            $flags = JSON_PRETTY_PRINT;
58
59        $encoded = json_encode($toEncode, $flags);
60        if ($encoded === false)
61            return null;
62
63        return $encoded;
64    }
65}