public function _get_superglobal($name)
{
$original_name = strtoupper($name);
$name = $this->normalizeSuperglobal($name);
if (isset($this->definitions['superglobals'][$name])) {
$superglobal = $this->definitions['superglobals'][$name];
if (is_callable($superglobal)) {
return call_user_func_array($superglobal, [$this]);
}
return $superglobal;
} else {
if (isset($this->whitelist['superglobals'][$name])) {
if (count($this->whitelist['superglobals'][$name])) {
if (isset($GLOBALS[$original_name])) {
$whitelisted_superglobal = [];
foreach ($this->whitelist['superglobals'][$name] as $key => $value) {
if (isset($GLOBALS[$original_name][$key])) {
$whitelisted_superglobal[$key] = $GLOBALS[$original_name][$key];
}
}
return $whitelisted_superglobal;
}
} else {
if (isset($GLOBALS[$original_name])) {
return $GLOBALS[$original_name];
}
}
} else {
if (isset($this->blacklist['superglobals'][$name])) {
if (count($this->blacklist['superglobals'][$name])) {
if (isset($GLOBALS[$original_name])) {
$blacklisted_superglobal = $GLOBALS[$original_name];
foreach ($this->blacklist['superglobals'][$name] as $key => $value) {
if (isset($blacklisted_superglobal[$key])) {
unset($blacklisted_superglobal[$key]);
}
}
return $blacklisted_superglobal;
}
}
}
}
}
return [];
}