HTTP Request System Migration
TorrentPier has replaced direct superglobal access ($_GET, $_POST, $_REQUEST, $_COOKIE, $_SERVER, $_FILES) with a modern HTTP Request abstraction built on symfony/http-foundation.
Quick Migration Overview
// Old way (deprecated)
$topic_id = (int)$_GET['t'];
$mode = $_REQUEST['mode'] ?? '';
$submit = !empty($_POST['submit']);
$session = $_COOKIE['bb_data'];
$uri = $_SERVER['REQUEST_URI'];
$file = $_FILES['attachment'];
// New way (recommended)
$topic_id = request()->getInt('t');
$mode = request()->getString('mode');
$submit = request()->post->has('submit');
$session = request()->cookies->get('bb_data');
$uri = request()->getRequestUri();
$file = request()->files->get('attachment');
API Reference
Properties (Symfony InputBag)
Access specific parameter sources directly via properties:
request()->query->get('key') // GET parameters ($_GET equivalent)
request()->post->get('key') // POST parameters ($_POST equivalent)
request()->cookies->get('key') // Cookies ($_COOKIE equivalent)
request()->server->get('key') // Server variables ($_SERVER equivalent)
request()->headers->get('key') // HTTP headers
request()->files->get('key') // Uploaded files ($_FILES equivalent)
Each property returns a Symfony bag with methods like get(), has(), all(), getInt(), getBoolean(), etc.
Typed Getters (POST > GET Priority)
Convenience methods that check POST first, then GET:
request()->get('key') // mixed - raw value from POST or GET
request()->has('key') // bool - check if parameter exists
request()->all() // array - all merged parameters
request()->getInt('key') // int - integer value (default: 0)
request()->getString('key') // string - string value (default: '')
request()->getBool('key') // bool - boolean value (default: false)
request()->getFloat('key') // float - float value (default: 0.0)
request()->getArray('key') // array - array value (default: [])
Request Metadata
request()->getMethod() // HTTP method (GET, POST, etc.)
request()->isPost() // Check if POST request
request()->isGet() // Check if GET request
request()->isAjax() // Check if AJAX request
request()->isSecure() // Check if HTTPS
request()->getClientIp() // Client IP address
request()->getRequestUri() // Request URI with query string
request()->getPathInfo() // Request path without query string
request()->getQueryString() // Query string only
request()->getHost() // Host name
request()->getScheme() // Scheme (http or https)
request()->getUserAgent() // User-Agent header
request()->getReferer() // Referer header
request()->getContentType() // Content-Type header
request()->getContent() // Raw request body
request()->getSymfonyRequest() // Underlying Symfony Request object
Migration Examples
GET Parameters
// Before
$forum_id = isset($_GET['f']) ? (int)$_GET['f'] : 0;
$start = abs((int)($_GET['start'] ?? 0));
// After
$forum_id = request()->query->getInt('f');
$start = abs(request()->query->getInt('start'));
POST Parameters
// Before
$submit = !empty($_POST['submit']);
$message = $_POST['message'] ?? '';
// After
$submit = request()->post->has('submit');
$message = request()->post->get('message', '');
REQUEST (POST > GET)
// Before
$mode = (string)@$_REQUEST['mode'];
$topic_id = (int)$_REQUEST['t'];
// After
$mode = request()->getString('mode');
$topic_id = request()->getInt('t');
Cookies
// Before
$tracks = !empty($_COOKIE[$name]) ? json_decode($_COOKIE[$name], true) : [];
// After
$cookie = request()->cookies->get($name);
$tracks = $cookie ? json_decode($cookie, true) : [];
Server Variables
// Before
$request_uri = $_SERVER['REQUEST_URI'] ?? '/';
$remote_addr = $_SERVER['REMOTE_ADDR'];
// After
$request_uri = request()->getRequestUri();
$remote_addr = request()->getClientIp();
File Uploads
// Before
if (!empty($_FILES['attachment']['name'])) {
$file = $_FILES['attachment'];
}
// After
$file = request()->files->get('attachment');
if ($file && $file->isValid()) {
// Process uploaded file
}
Symfony Request Access
For advanced operations, access the underlying Symfony Request object:
$symfonyRequest = request()->getSymfonyRequest();