Files
web-site/Internal/package-request/Server.php
T
2026-07-01 16:44:17 +03:00

146 lines
6.0 KiB
PHP

<?php namespace ZN\Request;
/**
* ZN PHP Web Framework
*
* "Simplicity is the ultimate sophistication." ~ Da Vinci
*
* @package ZN
* @license MIT [http://opensource.org/licenses/MIT]
* @author Ozan UYKUN [ozan@znframework.com]
*/
class Server
{
/**
* Magic Call Static
*
* @param string $method
* @param array $parameters
*
* @return mixed
*/
public static function __callStatic($method, $parameters)
{
return self::data($method);
}
/**
* OS
*
* @return string
*
* @codeCoverageIgnore
*/
public static function os() : string
{
if( stristr(PHP_OS, 'WIN') )
{
return 'WIN';
}
elseif( stristr(PHP_OS, 'MAC') )
{
return 'MAC';
}
elseif( stristr(PHP_OS, 'LINUX') )
{
return 'LINUX';
}
elseif( stristr(PHP_OS, 'UNIX') )
{
return 'UNIX';
}
else
{
return 'UNKNOWN';
}
}
/**
* server
*
* The compiled version of the $_SERVER global variable.
*
* @param string $type
*
* @return mixed
*/
public static function data(?string $type = NULL)
{
$server =
[
NULL => $_SERVER,
'name' => $_SERVER['SERVER_NAME'] ?? false,
'admin' => $_SERVER['SERVER_ADMIN'] ?? false,
'addr' => $_SERVER['SERVER_ADDR'] ?? false,
'port' => $_SERVER['SERVER_PORT'] ?? false,
'protocol' => $_SERVER['SERVER_PROTOCOL'] ?? false,
'signature' => $_SERVER['SERVER_SIGNATURE'] ?? false,
'software' => $_SERVER['SERVER_SOFTWARE'] ?? false,
'remoteAddr' => $_SERVER['REMOTE_ADDR'] ?? false,
'remotePort' => $_SERVER['REMOTE_PORT'] ?? false,
'requestMethod' => $_SERVER['REQUEST_METHOD'] ?? false,
'requestUri' => $_SERVER['REQUEST_URI'] ?? false,
'requestScheme' => $_SERVER['REQUEST_SCHEME'] ?? false,
'requestTime' => $_SERVER['REQUEST_TIME'] ?? false,
'requestTimeFloat' => $_SERVER['REQUEST_TIME_FLOAT'] ?? false,
'accept' => $_SERVER['HTTP_ACCEPT'] ?? false,
'acceptCharset' => $_SERVER['HTTP_ACCEPT_CHARSET'] ?? false,
'acceptEncoding' => $_SERVER['HTTP_ACCEPT_ENCODING'] ?? false,
'acceptLanguage' => $_SERVER['HTTP_ACCEPT_LANGUAGE'] ?? false,
'clientIp' => $_SERVER['HTTP_CLIENT_IP'] ?? false,
'xForwardedHost' => $_SERVER['HTTP_X_FORWARDED_HOST'] ?? false,
'xForwardedFor' => $_SERVER['HTTP_X_FORWARDED_FOR'] ?? false,
'xOriginalUrl' => $_SERVER['HTTP_X_ORIGINAL_URL'] ?? false,
'xRequestedWith' => $_SERVER['HTTP_X_REQUESTED_WITH'] ?? false,
'connection' => $_SERVER['HTTP_CONNECTION'] ?? false,
'host' => $_SERVER['HTTP_HOST'] ?? false,
'referer' => $_SERVER['HTTP_REFERER'] ?? false,
'userAgent' => $_SERVER['HTTP_USER_AGENT'] ?? false,
'cookie' => $_SERVER['HTTP_COOKIE'] ?? false,
'cacheControl' => $_SERVER['HTTP_CACHE_CONTROL'] ?? false,
'https' => $_SERVER['HTTPS'] ?? false,
'scriptFileName' => $_SERVER['SCRIPT_FILENAME'] ?? false,
'scriptName' => $_SERVER['SCRIPT_NAME'] ?? false,
'path' => $_SERVER['PATH'] ?? false,
'pathInfo' => $_SERVER['PATH_INFO'] ?? false,
'currentPath' => $_SERVER['PATH_INFO'] ?? $_SERVER['QUERY_STRING'] ?? false,
'pathTranslated' => $_SERVER['PATH_TRANSLATED'] ?? false,
'pathext' => $_SERVER['PATHEXT'] ?? false,
'redirectQueryString' => $_SERVER['REDIRECT_QUERY_STRING'] ?? false,
'redirectUrl' => $_SERVER['REDIRECT_URL'] ?? false,
'redirectStatus' => $_SERVER['REDIRECT_STATUS'] ?? false,
'phpSelf' => $_SERVER['PHP_SELF'] ?? false,
'queryString' => $_SERVER['QUERY_STRING'] ?? false,
'documentRoot' => $_SERVER['DOCUMENT_ROOT'] ?? false,
'windir' => $_SERVER['WINDIR'] ?? false,
'comspec' => $_SERVER['COMSPEC'] ?? false,
'systemRoot' => $_SERVER['SystemRoot'] ?? false,
'gatewayInterface' => $_SERVER['GATEWAY_INTERFACE'] ?? false
];
if( $type === 'all' )
{
return $server;
}
if( isset($server[$type]) )
{
if( is_array($server[$type]) )
{
return $server[$type];
}
else
{
$return = htmlspecialchars($server[$type], ENT_QUOTES, "utf-8");
}
}
elseif( isset($_SERVER[$type]) )
{
$return = htmlspecialchars($_SERVER[$type], ENT_QUOTES, "utf-8");
}
// 5.4.3[edited]
return str_replace('&amp;', '&', $return ?? '') ?: false;
}
}