The EnvironmentHelper
class in JiFramework provides a collection of utility methods for accessing and managing server and request environment information. It centralizes common environment-related tasks, making it easier for developers to retrieve data such as the user's IP address, request method, server information, and more.
By using the EnvironmentHelper
class, developers can:
- Retrieve User Information: Get the client's IP address and request method.
- Access Server Data: Obtain server software details, PHP version, and other server variables.
- Handle Request Headers: Fetch all request headers in an associative array.
- Simplify Environment Access: Use a single class to access various environment details instead of dealing with superglobals directly.
Usage:
// Option 1: Initialize the EnvironmentHelper through the App
use JIFramework\Core\App\App;
$app = new App();
$environment = $app->environment;
OR
// Option 2: Directly instantiate the Encryption
use JIFramework\Core\Utilities\Environment;
$environmen = new EnvironmentHelper();
Explanation:
- Option 1: Initializes the
App
class and retrieves theEnvironmentHelper
instance through it, using the framework's main entry point. - Option 2: Directly creates a
EnvironmentHelper
instance.
Method: getCurrentScriptName(): string
Description: Retrieves the name of the currently executing script.
Parameters: None
Returns: A string
representing the script name.
Usage:
$scriptName = $environment->getCurrentScriptName();
echo 'Current Script: ' . $scriptName;
// Example output:
// Current Script: index.php
Explanation:
- Uses
$_SERVER['PHP_SELF']
to get the full path and filename of the currently executing script. - Applies
basename()
to extract the filename from the path. - Useful for logging, debugging, or displaying the current script name.
Method: getUserIp(): string
Description: Retrieves the client's IP address, accounting for shared internet, proxies, and direct connections.
Parameters: None
Returns: A string
containing the user's IP address, or an empty string if not found.
Usage:
$clientIp = $environment->getUserIp();
echo 'Client IP: ' . $clientIp;
// Example output:
// Client IP: 203.0.113.42
Explanation:
- Checks various server variables to determine the client's IP address:
HTTP_CLIENT_IP
: IP address from shared internet or ISP.HTTP_X_FORWARDED_FOR
: IP addresses when passing through proxies (may contain multiple IPs).REMOTE_ADDR
: Direct IP address of the client.- Filters and validates IP addresses using
filter_var()
withFILTER_VALIDATE_IP
. - Returns the first valid IP address found.
- Essential for logging, security checks, and access control.
Method: getServerInfo(): array
Description: Retrieves key server information in an associative array.
Parameters: None
Returns: An array
containing server information.
Usage:
$serverInfo = $environment->getServerInfo();
print_r($serverInfo);
/* Example output:
Array
(
[server_software] => Apache/2.4.41 (Unix)
[server_protocol] => HTTP/1.1
[document_root] => /var/www/html
[remote_addr] => 203.0.113.42
[request_method] => GET
[request_uri] => /index.php
[query_string] => id=5&name=John
)
*/
Explanation:
- Retrieves server variables using
$_SERVER
superglobal: SERVER_SOFTWARE
: Server identification string.SERVER_PROTOCOL
: Name and revision of the information protocol.DOCUMENT_ROOT
: The document root directory under which the current script is executing.REMOTE_ADDR
: The IP address from which the user is viewing the current page.REQUEST_METHOD
: The request method used to access the page (e.g., GET, POST).REQUEST_URI
: The URI which was given to access the page.QUERY_STRING
: The query string, if any, via which the page was accessed.- Uses null coalescing operator
??
to provide empty strings if variables are not set. - Useful for debugging, logging, or dynamically adjusting application behavior based on server info.
Method: getPhpVersion(): string
Description: Retrieves the current PHP version.
Parameters: None
Returns: A string
representing the PHP version.
Usage:
$phpVersion = $environment->getPhpVersion();
echo 'PHP Version: ' . $phpVersion;
// Example output:
// PHP Version: 7.4.3
Explanation:
- Uses the built-in
phpversion()
function to get the PHP version. - Helpful for logging, compatibility checks, or displaying system information.
Method: getRequestHeaders(): array
Description: Retrieves all HTTP request headers as an associative array.
Parameters: None
Returns: An array
containing request headers.
Usage:
$requestHeaders = $environment->getRequestHeaders();
print_r($requestHeaders);
/* Example output:
Array
(
[Host] => www.example.com
[User-Agent] => Mozilla/5.0 (Windows NT 10.0; Win64; x64)
[Accept] => text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
[Accept-Language] => en-US,en;q=0.5
[Accept-Encoding] => gzip, deflate
[Connection] => keep-alive
)
*/
Explanation:
- Checks if the
getallheaders()
function exists (available in Apache). - If available, uses
getallheaders()
to retrieve the headers. - If not, manually constructs the headers array by parsing
$_SERVER
variables starting withHTTP_
. - Converts header names to the standard format (e.g.,
HTTP_USER_AGENT
toUser-Agent
). - Useful for inspecting request headers, implementing custom authentication, or debugging.
Method: getRequestMethod(): string
Description: Retrieves the HTTP request method used to access the page (e.g., GET, POST).
Parameters: None
Returns: A string
representing the request method.
Usage:
$requestMethod = $environment->getRequestMethod();
echo 'Request Method: ' . $requestMethod;
// Example output:
// Request Method: POST
Explanation:
- Accesses
$_SERVER['REQUEST_METHOD']
to get the request method. - Defaults to
'GET'
if the variable is not set. - Useful for handling different request types in routing or controller logic.