Issues (2)

src/Session.php (1 issue)

1
<?php
2
3
/**
4
 * This file is part of the miBadger package.
5
 *
6
 * @author Michael Webbers <[email protected]>
7
 * @license http://opensource.org/licenses/Apache-2.0 Apache v2 License
8
 */
9
10
namespace miBadger\Http;
11
12
use miBadger\Singleton\SingletonTrait;
13
14
/**
15
 * The session class
16
 *
17
 * @since 1.0.0
18
 */
19
class Session implements \IteratorAggregate
20
{
21
	use SingletonTrait;
22
23
	/** @var array The session. */
24
	private $session;
25
26
	/**
27
	 * Construct a Session object.
28
	 *
29
	 * @global array $_SESSION The session parameters.
30
	 */
31 14
	protected function __construct()
32
	{
33 14
		$this->session = &$_SESSION;
34 14
	}
35
36
	/**
37
	 * Initialize the session, if none exists.
38
	 *
39
	 * @param $name = null
0 ignored issues
show
Documentation Bug introduced by
The doc comment = at position 0 could not be parsed: Unknown type name '=' at position 0 in =.
Loading history...
40
	 * @param $domain bool 
41
	 * @return null
42
	 * @throws \RuntimeException on failure.
43
	 */
44 5
	public static function start($name = null, $domain = false)
45
	{
46 5
		if (session_status() !== PHP_SESSION_NONE) {
47 1
			throw new \RuntimeException('Can\'t start a new session.');
48
		}
49 5
		if ($name !== null) {
50 2
			session_name($name);
51
		}
52 5
		if ($domain){
53
			preg_match("/[^\.\/]+\.[^\.\/]+$/", $_SERVER['HTTP_HOST'], $matches);
54
			session_set_cookie_params(0, '/', $matches[0]);
55
		}
56 5
		session_start();
57 5
	}
58
59
	/**
60
	 * Destroy the session, if one exists.
61
	 *
62
	 * @return null
63
	 * @throws \RuntimeException on failure.
64
	 */
65 3
	public static function destroy()
66
	{
67 3
		if (session_status() !== PHP_SESSION_ACTIVE) {
68 1
			throw new \RuntimeException('Can\'t destroy the session. There is no active session.');
69
		}
70
71 3
		if (!session_destroy()) {
72 1
			throw new \RuntimeException('Failed to destroy the active session.');
73
		}
74 2
	}
75
76
	/**
77
	 * {@inheritdoc}
78
	 */
79 1
	public function getIterator()
80
	{
81 1
		return new \ArrayIterator(static::getInstance()->session);
82
	}
83
84
	/**
85
	 * Returns the number of key-value mappings in the session map.
86
	 *
87
	 * @return int the number of key-value mappings in the session map.
88
	 */
89 1
	public static function count()
90
	{
91 1
		return count(static::getInstance()->session);
92
	}
93
94
	/**
95
	 * Returns true if the session map contains no key-value mappings.
96
	 *
97
	 * @return bool true if the session map contains no key-value mappings.
98
	 */
99 2
	public static function isEmpty()
100
	{
101 2
		return empty(static::getInstance()->session);
102
	}
103
104
	/**
105
	 * Returns true if the session map contains a mapping for the specified key.
106
	 *
107
	 * @param string $key
108
	 * @return bool true if the session map contains a mapping for the specified key.
109
	 */
110 4
	public static function containsKey($key)
111
	{
112 4
		return isset(static::getInstance()->session[$key]);
113
	}
114
115
	/**
116
	 * Returns true if the session map maps one or more keys to the specified value.
117
	 *
118
	 * @param string $value
119
	 * @return bool true if the session map maps one or more keys to the specified value.
120
	 */
121 1
	public static function containsValue($value)
122
	{
123 1
		return in_array($value, static::getInstance()->session);
124
	}
125
126
	/**
127
	 * Returns the value to which the specified key is mapped, or null if the session map contains no mapping for the key.
128
	 *
129
	 * @param string $key
130
	 * @return string|null the value to which the specified key is mapped, or null if the session map contains no mapping for the key.
131
	 */
132 2
	public static function get($key)
133
	{
134 2
		return static::containsKey($key) ? static::getInstance()->session[$key] : null;
135
	}
136
137
	/**
138
	 * Associates the specified value with the specified key in the session map.
139
	 *
140
	 * @param string $key
141
	 * @param string $value
142
	 * @return null
143
	 */
144 8
	public static function set($key, $value)
145
	{
146 8
		static::getInstance()->session[$key] = $value;
147 8
	}
148
149
	/**
150
	 * Removes the mapping for the specified key from the session map if present.
151
	 *
152
	 * @param string $key
153
	 * @return null
154
	 */
155 1
	public static function remove($key)
156
	{
157 1
		if (static::containsKey($key)) {
158 1
			unset(static::getInstance()->session[$key]);
159
		}
160 1
	}
161
162
	/**
163
	 * Removes all of the mappings from the session map.
164
	 *
165
	 * @return null
166
	 */
167 1
	public static function clear()
168
	{
169 1
		static::getInstance()->session = [];
170 1
	}
171
}
172