Json::decode()   A
last analyzed

Complexity

Conditions 2
Paths 2

Size

Total Lines 8
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 2
eloc 4
c 1
b 0
f 0
nc 2
nop 4
dl 0
loc 8
rs 10
1
<?php
2
3
namespace alekciy\ofd;
4
5
use InvalidArgumentException;
6
7
/**
8
 * Класс для единообразного кодирования/декодирования JSON в приложении.
9
 */
10
class Json
11
{
12
	/**
13
	 * Сериализовать переменную $value в строку формата JSON.
14
	 *
15
	 * @link http://php.net/manual/ru/function.json-encode.php
16
	 * @link http://php.net/manual/ru/json.constants.php
17
	 *
18
	 * @param mixed $value     Значение, которое будет закодировано. Может быть любого типа за исключением resource.
19
	 * @param integer $options Битовая маска, составляемая из значений JSON констант.
20
	 * @param integer $depth   Максимальная глубина.
21
	 * @throws InvalidArgumentException
22
	 * @return string
23
	 */
24
	public static function encode($value, $options = 0, $depth = 512)
25
	{
26
		$options = $options | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_NUMERIC_CHECK;
27
		$result = json_encode($value, $options, $depth);
28
		if (JSON_ERROR_NONE != json_last_error()) {
29
			throw new InvalidArgumentException(json_last_error_msg(), json_last_error());
30
		}
31
32
		return $result;
33
	}
34
35
	/**
36
	 * Десериализовать строку $json в формате JSON в переменную.
37
	 *
38
	 * @link http://php.net/manual/ru/function.json-decode.php
39
	 * @link http://php.net/manual/ru/json.constants.php
40
	 *
41
	 * @param string $json     Строка с формате JSON. Эта функция работает только со строками в UTF-8 кодировке.
42
	 * @param bool $assoc      Если TRUE, возвращаемые объекты будут преобразованы в ассоциативные массивы.
43
	 * @param integer $depth   Максимальная глубина рекурсии.
44
	 * @param integer $options Битовая маска, составляемая из значений JSON констант.
45
	 * @throws InvalidArgumentException
46
	 * @return mixed
47
	 */
48
	public static function decode($json, $assoc = true, $depth = 512, $options = 0)
49
	{
50
		$result = json_decode($json, $assoc, $depth, $options);
51
		if (JSON_ERROR_NONE != json_last_error()) {
52
			throw new InvalidArgumentException(json_last_error_msg(), json_last_error());
53
		}
54
55
		return $result;
56
	}
57
}
58