Completed
Push — master ( da58d4...61a0f7 )
by Henry
06:34
created

includes/Request.php (1 issue)

Check for loose comparison of strings.

Best Practice Bug Major

Upgrade to new PHP Analysis Engine

These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more

1
<?php
2
namespace Redaxscript;
3
4
use function array_key_exists;
5
use function is_array;
6
7
/**
8
 * children class to request globals
9
 *
10
 * @since 2.2.0
11
 *
12
 * @package Redaxscript
13
 * @category Request
14
 * @author Henry Ruhs
15
 */
16
17
class Request extends Singleton
18
{
19
	/**
20
	 * array of the request
21
	 *
22
	 * @var array
23
	 */
24
25
	protected static $_requestArray = [];
26
27
	/**
28
	 * init the class
29
	 *
30
	 * @since 2.4.0
31
	 */
32
33 1
	public function init() : void
34
	{
35
		self::$_requestArray =
36
		[
37 1
			'server' => $_SERVER ? : [],
38
			'get' => $_GET ? : [],
39
			'post' => $_POST ? : [],
40
			'files' => $_FILES ? : [],
41
			'session' => $_SESSION ? : [],
42
			'cookie' => $_COOKIE ? : []
43
		];
44 1
	}
45
46
	/**
47
	 * get the value from globals
48
	 *
49
	 * @since 3.0.0
50
	 *
51
	 * @param string $key key of the item
52
	 * @param string $index index of the array
53
	 *
54
	 * @return string|array|null
55
	 */
56
57 9
	public function get(string $key = null, string $index = null)
58
	{
59
		/* handle index */
60
61 9
		if (is_array(self::$_requestArray) && array_key_exists($index, self::$_requestArray))
62
		{
63 6
			$requestArray = self::$_requestArray[$index];
64
		}
65
		else
66
		{
67 3
			$requestArray = self::$_requestArray;
68
		}
69
70
		/* values as needed */
71
72 9
		if (is_array($requestArray) && array_key_exists($key, $requestArray))
73
		{
74 7
			return $requestArray[$key];
75
		}
76 2
		if (!$key)
0 ignored issues
show
Bug Best Practice introduced by
The expression $key of type null|string is loosely compared to false; this is ambiguous if the string can be empty. You might want to explicitly use === null instead.

In PHP, under loose comparison (like ==, or !=, or switch conditions), values of different types might be equal.

For string values, the empty string '' is a special case, in particular the following results might be unexpected:

''   == false // true
''   == null  // true
'ab' == false // false
'ab' == null  // false

// It is often better to use strict comparison
'' === false // false
'' === null  // false
Loading history...
77
		{
78 1
			return $requestArray;
79
		}
80 1
		return null;
81
	}
82
83
	/**
84
	 * get the value from server
85
	 *
86
	 * @since 2.2.0
87
	 *
88
	 * @param string $key key of the item
89
	 *
90
	 * @return string|array|null
91
	 */
92
93 1
	public function getServer(string $key = null)
94
	{
95 1
		return $this->get($key, 'server');
96
	}
97
98
	/**
99
	 * get the value from query
100
	 *
101
	 * @since 2.2.0
102
	 *
103
	 * @param string $key key of the item
104
	 *
105
	 * @return string|array|null
106
	 */
107
108 1
	public function getQuery(string $key = null)
109
	{
110 1
		return $this->get($key, 'get');
111
	}
112
113
	/**
114
	 * get the value from post
115
	 *
116
	 * @since 2.2.0
117
	 *
118
	 * @param string $key key of the item
119
	 *
120
	 * @return string|array|null
121
	 */
122
123 1
	public function getPost(string $key = null)
124
	{
125 1
		return $this->get($key, 'post');
126
	}
127
128
	/**
129
	 * get the value from files
130
	 *
131
	 * @since 3.0.0
132
	 *
133
	 * @param string $key key of the item
134
	 *
135
	 * @return string|array|null
136
	 */
137
138 1
	public function getFiles(string $key = null)
139
	{
140 1
		return $this->get($key, 'files');
141
	}
142
143
	/**
144
	 * get the value from session
145
	 *
146
	 * @since 2.2.0
147
	 *
148
	 * @param string $key key of the item
149
	 *
150
	 * @return string|array|null
151
	 */
152
153 1
	public function getSession(string $key = null)
154
	{
155 1
		return $this->get($key, 'session');
156
	}
157
158
	/**
159
	 * get the value from cookie
160
	 *
161
	 * @since 2.2.0
162
	 *
163
	 * @param string $key key of the item
164
	 *
165
	 * @return string|array|null
166
	 */
167
168 1
	public function getCookie(string $key = null)
169
	{
170 1
		return $this->get($key, 'cookie');
171
	}
172
173
	/**
174
	 * set the value to globals
175
	 *
176
	 * @since 2.2.0
177
	 *
178
	 * @param string $key key of the item
179
	 * @param string|array|null $value value of the item
180
	 */
181
182 1
	public function set(string $key = null, $value = null) : void
183
	{
184 1
		self::$_requestArray[$key] = $GLOBALS[$key] = $value;
185 1
	}
186
187
	/**
188
	 * set the value to server
189
	 *
190
	 * @since 2.2.0
191
	 *
192
	 * @param string $key key of the item
193
	 * @param string|array|null $value value of the item
194
	 */
195
196 1
	public function setServer(string $key = null, $value = null) : void
197
	{
198 1
		self::$_requestArray['server'][$key] = $value;
199 1
	}
200
201
	/**
202
	 * set the value to query
203
	 *
204
	 * @since 2.2.0
205
	 *
206
	 * @param string $key key of the item
207
	 * @param string|array|null $value value of the item
208
	 */
209
210 1
	public function setQuery(string $key = null, $value = null) : void
211
	{
212 1
		self::$_requestArray['get'][$key] = $value;
213 1
	}
214
215
	/**
216
	 * set the value to post
217
	 *
218
	 * @since 2.2.0
219
	 *
220
	 * @param string $key key of the item
221
	 * @param string|array|null $value value of the item
222
	 */
223
224 1
	public function setPost(string $key = null, $value = null) : void
225
	{
226 1
		self::$_requestArray['post'][$key] = $value;
227 1
	}
228
229
	/**
230
	 * set the value to files
231
	 *
232
	 * @since 3.0.0
233
	 *
234
	 * @param string $key key of the item
235
	 * @param string|array|null $value value of the item
236
	 */
237
238 1
	public function setFiles(string $key = null, $value = null) : void
239
	{
240 1
		self::$_requestArray['files'][$key] = $value;
241 1
	}
242
243
	/**
244
	 * set the value to session
245
	 *
246
	 * @since 2.2.0
247
	 *
248
	 * @param string $key key of the item
249
	 * @param string|array|null $value value of the item
250
	 */
251
252 1
	public function setSession(string $key = null, $value = null) : void
253
	{
254 1
		self::$_requestArray['session'][$key] = $_SESSION[$key] = $value;
255 1
	}
256
257
	/**
258
	 * set the value to cookie
259
	 *
260
	 * @since 2.2.0
261
	 *
262
	 * @param string $key key of the item
263
	 * @param string|array|null $value value of the item
264
	 */
265
266 1
	public function setCookie(string $key = null, $value = null) : void
267
	{
268 1
		self::$_requestArray['cookie'][$key] = $_COOKIE[$key] = $value;
269 1
	}
270
271
	/**
272
	 * refresh the session
273
	 *
274
	 * @since 2.6.2
275
	 */
276
277 1
	public function refreshSession() : void
278
	{
279 1
		self::$_requestArray['session'] = $_SESSION ? : [];
280 1
	}
281
282
	/**
283
	 * refresh the cookie
284
	 *
285
	 * @since 2.6.2
286
	 */
287
288 1
	public function refreshCookie() : void
289
	{
290 1
		self::$_requestArray['cookie'] = $_COOKIE ? : [];
291 1
	}
292
}
293