Completed
Push — develop ( 565971...289dbe )
by Michael
02:03
created

Session::clear()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 3
CRAP Score 1

Importance

Changes 0
Metric Value
dl 0
loc 4
ccs 3
cts 3
cp 1
rs 10
c 0
b 0
f 0
cc 1
eloc 2
nc 1
nop 0
crap 1
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
 * @version 1.0.0
9
 */
10
11
namespace miBadger\Http;
12
13
use miBadger\Singleton\SingletonTrait;
14
15
/**
16
 * The session class
17
 *
18
 * @since 1.0.0
19
 */
20
class Session implements \IteratorAggregate
21
{
22
	use SingletonTrait;
23
24
	/** @var array The session. */
25
	private $session;
26
27
	/**
28
	 * Construct a Sesssion object.
29
	 *
30
	 * @global array $_SESSION The session parameters.
31
	 */
32 14
	protected function __construct()
0 ignored issues
show
Coding Style introduced by
__construct uses the super-global variable $_SESSION which is generally not recommended.

Instead of super-globals, we recommend to explicitly inject the dependencies of your class. This makes your code less dependent on global state and it becomes generally more testable:

// Bad
class Router
{
    public function generate($path)
    {
        return $_SERVER['HOST'].$path;
    }
}

// Better
class Router
{
    private $host;

    public function __construct($host)
    {
        $this->host = $host;
    }

    public function generate($path)
    {
        return $this->host.$path;
    }
}

class Controller
{
    public function myAction(Request $request)
    {
        // Instead of
        $page = isset($_GET['page']) ? intval($_GET['page']) : 1;

        // Better (assuming you use the Symfony2 request)
        $page = $request->query->get('page', 1);
    }
}
Loading history...
33
	{
34 14
		$this->session = &$_SESSION;
35 14
	}
36
37
	/**
38
	 * Initialize the session, if none exists.
39
	 *
40
	 * @param $name = null
41
	 * @return null
42
	 * @throws \RuntimeException on failure.
43
	 */
44 5
	public static function start($name = null)
45
	{
46 5
		if (session_status() !== PHP_SESSION_NONE) {
47 1
			throw new \RuntimeException('Can\'t start a new session.');
48
		}
49
50 5
		if ($name !== null) {
51 2
			session_name($name);
52
		}
53
54 5
		session_start();
55 5
	}
56
57
	/**
58
	 * Destroy the session, if one exists.
59
	 *
60
	 * @return null
61
	 * @throws \RuntimeException on failure.
62
	 */
63 3
	public static function destroy()
64
	{
65 3
		if (session_status() !== PHP_SESSION_ACTIVE) {
66 1
			throw new \RuntimeException('Can\'t destroy the session. There is no active session.');
67
		}
68
69 3
		if (!session_destroy()) {
70 1
			throw new \RuntimeException('Failed to destroy the active session.');
71
		}
72 2
	}
73
74
	/**
75
	 * {@inheritdoc}
76
	 */
77 1
	public function getIterator()
78
	{
79 1
		return new \ArrayIterator(static::getInstance()->session);
80
	}
81
82
	/**
83
	 * Returns the number of key-value mappings in the session map.
84
	 *
85
	 * @return int the number of key-value mappings in the session map.
86
	 */
87 1
	public static function count()
88
	{
89 1
		return count(static::getInstance()->session);
90
	}
91
92
	/**
93
	 * Returns true if the session map contains no key-value mappings.
94
	 *
95
	 * @return bool true if the session map contains no key-value mappings.
96
	 */
97 2
	public static function isEmpty()
98
	{
99 2
		return empty(static::getInstance()->session);
100
	}
101
102
	/**
103
	 * Returns true if the session map contains a mapping for the specified key.
104
	 *
105
	 * @param string $key
106
	 * @return bool true if the session map contains a mapping for the specified key.
107
	 */
108 4
	public static function containsKey($key)
109
	{
110 4
		return isset(static::getInstance()->session[$key]);
111
	}
112
113
	/**
114
	 * Returns true if the session map maps one or more keys to the specified value.
115
	 *
116
	 * @param string $value
117
	 * @return bool true if the session map maps one or more keys to the specified value.
118
	 */
119 1
	public static function containsValue($value)
120
	{
121 1
		return in_array($value, static::getInstance()->session);
122
	}
123
124
	/**
125
	 * Returns the value to which the specified key is mapped, or null if the session map contains no mapping for the key.
126
	 *
127
	 * @param string $key
128
	 * @return string|null the value to which the specified key is mapped, or null if the session map contains no mapping for the key.
129
	 */
130 2
	public static function get($key)
131
	{
132 2
		return static::containsKey($key) ? static::getInstance()->session[$key] : null;
133
	}
134
135
	/**
136
	 * Associates the specified value with the specified key in the session map.
137
	 *
138
	 * @param string $key
139
	 * @param string $value
140
	 * @return null
141
	 */
142 8
	public static function set($key, $value)
143
	{
144 8
		static::getInstance()->session[$key] = $value;
145 8
	}
146
147
	/**
148
	 * Removes the mapping for the specified key from the session map if present.
149
	 *
150
	 * @param string $key
151
	 * @return null
152
	 */
153 1
	public static function remove($key)
154
	{
155 1
		if (static::containsKey($key)) {
156 1
			unset(static::getInstance()->session[$key]);
157
		}
158 1
	}
159
160
	/**
161
	 * Removes all of the mappings from the session map.
162
	 *
163
	 * @return null
164
	 */
165 1
	public static function clear()
166
	{
167 1
		static::getInstance()->session = [];
168 1
	}
169
}
170