Completed
Push — master ( 91e761...756f60 )
by Thomas
02:42
created

Parameters::getByName()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 10
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 6

Importance

Changes 1
Bugs 0 Features 0
Metric Value
c 1
b 0
f 0
dl 0
loc 10
ccs 0
cts 8
cp 0
rs 9.4286
cc 2
eloc 7
nc 2
nop 1
crap 6
1
<?php
2
namespace gossi\swagger\collections;
3
4
use gossi\swagger\parts\RefPart;
5
use phootwork\collection\ArrayList;
6
use phootwork\collection\CollectionUtils;
7
use phootwork\lang\Arrayable;
8
use gossi\swagger\Parameter;
9
10
class Parameters implements Arrayable {
11
	
12
	use RefPart;
13
	
14
	/** @var ArrayList */
15
	private $parameters;
16
	
17 11
	public function __construct($contents = null) {
18 11
		$this->parse($contents === null ? new ArrayList() : $contents);
19 11
	}
20
	
21 11
	private function parse($contents) {
22 11
		$data = CollectionUtils::toMap($contents);
23
		
24 11
		$this->parameters = new ArrayList();
25 11
		$this->parseRef($data);
26
		
27 11
		if (!$this->hasRef()) {
28 11
			foreach ($data as $param) {
29 3
				$this->parameters->add(new Parameter($param));
30 11
			}
31 11
		}
32 11
	}
33
	
34 7
	public function toArray() {
35 7
		if ($this->hasRef()) {
36 1
			return ['$ref' => $this->getRef()];
37
		}
38
		
39 6
		return $this->parameters->toArray();
40
	}
41
	
42 1
	public function size() {
43 1
		return $this->parameters->size();
44
	}
45
46
	/**
47
	 * Searches whether a parameter with the given name exists
48
	 * 
49
	 * @param string $name
50
	 * @return boolean
51
	 */
52
	public function searchByName($name) {
53 1
		return $this->parameters->search($name, function(Parameter $param, $name) {
54 1
			return $param->getName() == $name;
55 1
		});
56
	}
57
	
58
	/**
59
	 * Returns parameter with the given name if it exists
60
	 * 
61
	 * @param string $name
62
	 * @return Parameter|void
63
	 */
64 11
	public function findByName($name) {
65 1
		foreach ($this->parameters as $param) {
66 1
			if ($param->getName() == $name) {
67 1
				return $param;
68
			}
69 11
		}
70 1
	}
71
	
72
	/**
73
	 * Searches for the parameter with the given name. Creates a parameter with the given name
74
	 * if none exists
75
	 * 
76
	 * @param string $name
77
	 * @return Parameter
78
	 */
79
	public function getByName($name) {
80
		$param = $this->findByName($name);
81
		if (empty($param)) {
82
			$param = new Parameter();
83
			$param->setName($name);
84
			$this->parameters->add($param);
85
		}
86
		
87
		return $param;
88
	}
89
	
90
	/**
91
	 * Adds a parameter
92
	 * 
93
	 * @param Parameter $param
94
	 */
95 1
	public function add(Parameter $param) {
96 1
		$this->parameters->add($param);
97 1
	}
98
	
99
	/**
100
	 * Removes a parameter
101
	 * 
102
	 * @param Parameter $param
103
	 */
104 1
	public function remove(Parameter $param) {
105 1
		$this->parameters->remove($param);
106 1
	}
107
	
108
	/**
109
	 * Returns whether a given parameter exists
110
	 * 
111
	 * @param Parameter $param
112
	 * @return boolean
113
	 */
114 1
	public function contains(Parameter $param) {
115 1
		return $this->parameters->contains($param);
116
	}
117
}
118