Passed
Push — main ( f8d78a...6afd83 )
by Lode
01:12 queued 12s
created

ExtensionMemberManager   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 53
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 11
c 1
b 0
f 0
dl 0
loc 53
ccs 13
cts 13
cp 1
rs 10
wmc 5

3 Methods

Rating   Name   Duplication   Size   Complexity  
A getExtensionMembers() 0 2 1
A addExtensionMember() 0 14 3
A hasExtensionMembers() 0 2 1
1
<?php
2
3
namespace alsvanzelf\jsonapi\helpers;
4
5
use alsvanzelf\jsonapi\helpers\Converter;
6
use alsvanzelf\jsonapi\helpers\Validator;
7
use alsvanzelf\jsonapi\interfaces\ExtensionInterface;
8
9
trait ExtensionMemberManager {
10
	/** @var array */
11
	protected $extensionMembers = [];
12
	
13
	/**
14
	 * human api
15
	 */
16
	
17
	/**
18
	 * spec api
19
	 */
20
	
21
	/**
22
	 * @param ExtensionInterface $extension
23
	 * @param string             $key
24
	 * @param mixed              $value
25
	 */
26 16
	public function addExtensionMember(ExtensionInterface $extension, $key, $value) {
27 16
		$namespace = $extension->getNamespace();
28
		
29 16
		if (strpos($key, $namespace.':') === 0) {
30 1
			$key = substr($key, strlen($namespace.':'));
31
		}
32
		
33 16
		Validator::checkMemberName($key);
34
		
35 15
		if (is_object($value)) {
36 1
			$value = Converter::objectToArray($value);
37
		}
38
		
39 15
		$this->extensionMembers[$namespace.':'.$key] = $value;
40 15
	}
41
	
42
	/**
43
	 * internal api
44
	 */
45
	
46
	/**
47
	 * @internal
48
	 * 
49
	 * @return boolean
50
	 */
51 182
	public function hasExtensionMembers() {
52 182
		return ($this->extensionMembers !== []);
53
	}
54
	
55
	/**
56
	 * @internal
57
	 * 
58
	 * @return array
59
	 */
60 9
	public function getExtensionMembers() {
61 9
		return $this->extensionMembers;
62
	}
63
}
64