Completed
Push — 1.11.x ( 518476...344d9e )
by José
55:02 queued 28:13
created

__construct()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 5
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 2
eloc 3
nc 2
nop 1
dl 0
loc 5
rs 9.4285
c 0
b 0
f 0
1
<?php
2
/**
3
 * Case-insensitive dictionary, suitable for HTTP headers
4
 *
5
 * @package Requests
6
 * @subpackage Utilities
7
 */
8
9
/**
10
 * Case-insensitive dictionary, suitable for HTTP headers
11
 *
12
 * @package Requests
13
 * @subpackage Utilities
14
 */
15
class Requests_Utility_CaseInsensitiveDictionary implements ArrayAccess, IteratorAggregate {
16
	/**
17
	 * Actual item data
18
	 *
19
	 * @var array
20
	 */
21
	protected $data = array();
22
23
	/**
24
	 * Creates a case insensitive dictionary.
25
	 *
26
	 * @param array $data Dictionary/map to convert to case-insensitive
27
	 */
28
	public function __construct(array $data = array()) {
29
		foreach ($data as $key => $value) {
30
			$this->offsetSet($key, $value);
31
		}
32
	}
33
34
	/**
35
	 * Check if the given item exists
36
	 *
37
	 * @param string $key Item key
38
	 * @return boolean Does the item exist?
39
	 */
40
	public function offsetExists($key) {
41
		$key = strtolower($key);
42
		return isset($this->data[$key]);
43
	}
44
45
	/**
46
	 * Get the value for the item
47
	 *
48
	 * @param string $key Item key
49
	 * @return string Item value
50
	 */
51 View Code Duplication
	public function offsetGet($key) {
52
		$key = strtolower($key);
53
		if (!isset($this->data[$key])) {
54
			return null;
55
		}
56
57
		return $this->data[$key];
58
	}
59
60
	/**
61
	 * Set the given item
62
	 *
63
	 * @throws Requests_Exception On attempting to use dictionary as list (`invalidset`)
64
	 *
65
	 * @param string $key Item name
66
	 * @param string $value Item value
67
	 */
68
	public function offsetSet($key, $value) {
69
		if ($key === null) {
70
			throw new Requests_Exception('Object is a dictionary, not a list', 'invalidset');
71
		}
72
73
		$key = strtolower($key);
74
		$this->data[$key] = $value;
75
	}
76
77
	/**
78
	 * Unset the given header
79
	 *
80
	 * @param string $key
81
	 */
82
	public function offsetUnset($key) {
83
		unset($this->data[strtolower($key)]);
84
	}
85
86
	/**
87
	 * Get an iterator for the data
88
	 *
89
	 * @return ArrayIterator
90
	 */
91
	public function getIterator() {
92
		return new ArrayIterator($this->data);
93
	}
94
95
	/**
96
	 * Get the headers as an array
97
	 *
98
	 * @return array Header data
99
	 */
100
	public function getAll() {
101
		return $this->data;
102
	}
103
}
104