Completed
Push — master ( f20db1...22c8c1 )
by Nazar
05:15
created

Query::query()   B

Complexity

Conditions 5
Paths 8

Size

Total Lines 20
Code Lines 11

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 11
CRAP Score 5

Importance

Changes 0
Metric Value
cc 5
eloc 11
nc 8
nop 1
dl 0
loc 20
ccs 11
cts 11
cp 1
crap 5
rs 8.8571
c 0
b 0
f 0
1
<?php
2
/**
3
 * @package   CleverStyle Framework
4
 * @author    Nazar Mokrynskyi <[email protected]>
5
 * @copyright Copyright (c) 2016, Nazar Mokrynskyi
6
 * @license   MIT License, see license.txt
7
 */
8
namespace cs\Request;
9
10
trait Query {
11
	/**
12
	 * Query array, similar to `$_GET`
13
	 *
14
	 * @var array
15
	 */
16
	public $query;
17
	/**
18
	 * @param array $query Typically `$_GET`
19
	 */
20 26
	function init_query ($query = []) {
21 26
		$this->query = $query;
22 26
	}
23
	/**
24
	 * Get query parameter by name
25
	 *
26
	 * @param string[]|string[][] $name
27
	 *
28
	 * @return mixed|mixed[]|null Query parameter (or associative array of Query parameters) if exists or `null` otherwise (in case if `$name` is an array
29
	 *                             even one missing key will cause the whole thing to fail)
30
	 */
31 2
	function query (...$name) {
32 2
		if (count($name) === 1) {
33 2
			$name = $name[0];
34
		}
35
		/**
36
		 * @var string|string[] $name
37
		 */
38 2
		if (is_array($name)) {
39 2
			$result = [];
40 2
			foreach ($name as &$n) {
41 2
				if (!array_key_exists($n, $this->query)) {
42 2
					return null;
43
				}
44 2
				$result[$n] = $this->query[$n];
45
			}
46 2
			return $result;
47
		}
48
		/** @noinspection OffsetOperationsInspection */
49 2
		return @$this->query[$name];
50
	}
51
}
52