Completed
Push — master ( 32eaad...6cdc53 )
by Nazar
04:10
created

Query::query()   B

Complexity

Conditions 5
Paths 8

Size

Total Lines 20
Code Lines 11

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 30

Importance

Changes 0
Metric Value
cc 5
eloc 11
nc 8
nop 1
dl 0
loc 20
ccs 0
cts 11
cp 0
crap 30
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 12
	function init_query ($query = []) {
21 12
		$this->query = $query;
22 12
	}
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
	function query (...$name) {
32
		if (count($name) === 1) {
33
			$name = $name[0];
34
		}
35
		/**
36
		 * @var string|string[] $name
37
		 */
38
		if (is_array($name)) {
39
			$result = [];
40
			foreach ($name as &$n) {
41
				if (!array_key_exists($n, $this->query)) {
42
					return null;
43
				}
44
				$result[$n] = $this->query[$n];
45
			}
46
			return $result;
47
		}
48
		/** @noinspection OffsetOperationsInspection */
49
		return @$this->query[$name];
50
	}
51
}
52