MetaObject   A
last analyzed

Complexity

Total Complexity 12

Size/Duplication

Total Lines 87
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 1
Bugs 0 Features 1
Metric Value
eloc 26
c 1
b 0
f 1
dl 0
loc 87
ccs 28
cts 28
cp 1
rs 10
wmc 12

5 Methods

Rating   Name   Duplication   Size   Complexity  
A add() 0 8 2
A toArray() 0 11 3
A isEmpty() 0 12 4
A fromArray() 0 8 2
A fromObject() 0 4 1
1
<?php
2
3
namespace alsvanzelf\jsonapi\objects;
4
5
use alsvanzelf\jsonapi\helpers\AtMemberManager;
6
use alsvanzelf\jsonapi\helpers\Converter;
7
use alsvanzelf\jsonapi\helpers\ExtensionMemberManager;
8
use alsvanzelf\jsonapi\helpers\Validator;
9
use alsvanzelf\jsonapi\interfaces\ObjectInterface;
10
11
class MetaObject implements ObjectInterface {
12
	use AtMemberManager, ExtensionMemberManager;
13
	
14
	/** @var array */
15
	protected $meta = [];
16
	
17
	/**
18
	 * human api
19
	 */
20
	
21
	/**
22
	 * @param  array $meta
23
	 * @return MetaObject
24
	 */
25 21
	public static function fromArray(array $meta) {
26 21
		$metaObject = new self();
27
		
28 21
		foreach ($meta as $key => $value) {
29 21
			$metaObject->add($key, $value);
30
		}
31
		
32 21
		return $metaObject;
33
	}
34
	
35
	/**
36
	 * @param  object $meta
37
	 * @return MetaObject
38
	 */
39 1
	public static function fromObject($meta) {
40 1
		$array = Converter::objectToArray($meta);
41
		
42 1
		return self::fromArray($array);
43
	}
44
	
45
	/**
46
	 * spec api
47
	 */
48
	
49
	/**
50
	 * @param string $key
51
	 * @param mixed  $value
52
	 */
53 44
	public function add($key, $value) {
54 44
		Validator::checkMemberName($key);
55
		
56 44
		if (is_object($value)) {
57 1
			$value = Converter::objectToArray($value);
58
		}
59
		
60 44
		$this->meta[$key] = $value;
61
	}
62
	
63
	/**
64
	 * ObjectInterface
65
	 */
66
	
67
	/**
68
	 * @inheritDoc
69
	 */
70 47
	public function isEmpty() {
71 47
		if ($this->meta !== []) {
72 42
			return false;
73
		}
74 5
		if ($this->hasAtMembers()) {
75 3
			return false;
76
		}
77 3
		if ($this->hasExtensionMembers()) {
78 2
			return false;
79
		}
80
		
81 2
		return true;
82
	}
83
	
84
	/**
85
	 * @inheritDoc
86
	 */
87 45
	public function toArray() {
88 45
		$array = [];
89
		
90 45
		if ($this->hasAtMembers()) {
91 2
			$array = array_merge($array, $this->getAtMembers());
92
		}
93 45
		if ($this->hasExtensionMembers()) {
94 1
			$array = array_merge($array, $this->getExtensionMembers());
95
		}
96
		
97 45
		return array_merge($array, $this->meta);
98
	}
99
}
100