Request Class Usage
This document provides detailed examples for using the Request
class.
Basic Data Retrieval
use Stilmark\Base\Request;
$request = new Request();
// URL: /users?id=123&name=John
$userId = $request->get('id'); // "123"
$name = $request->get('name', 'Guest'); // "John"
$age = $request->get('age', 30); // 30 (default)
// POST data: name=Jane&email=jane@example.com
$postName = $request->post('name'); // "Jane"
// JSON payload: {"isActive": true, "roles": ["admin", "editor"]}
$payload = $request->json(); // Returns the full array
$isActive = $request->json('isActive'); // true
$roles = $request->json('roles'); // ["admin", "editor"]
Checking for Parameter Existence
The hasGet()
, hasPost()
, and hasJson()
methods are useful for verifying that required parameters are present before processing them.
// URL: /search?q=test&limit=10
if ($params = $request->hasGet(['q', 'limit'])) {
// $params will be ['q' => 'test', 'limit' => '10']
search($params['q'], $params['limit']);
} else {
// Handle missing parameters
echo 'Both `q` and `limit` are required.';
}
// JSON payload: {"username": "test", "password": "secret"}
if ($credentials = $request->hasJson(['username', 'password'])) {
// Authenticate user
login($credentials['username'], $credentials['password']);
}
Validation
Validate input data from GET, POST, or JSON sources against a set of rules.
// Validate a registration form (POST)
$rules = [
'username' => ['required', 'min:3', 'max:20'],
'email' => ['required', 'email'],
'password' => ['required', 'min:8']
];
$validation = $request->validatePost($rules);
if ($validation['valid']) {
// Data is valid, proceed with registration
createUser($validation['data']);
} else {
// Return errors to the user
// $validation['errors'] will contain messages like:
// ['email' => 'Invalid email format']
displayErrors($validation['errors']);
}
// Validate JSON data
$jsonRules = [
'productId' => ['required', 'type:int'],
'quantity' => ['required', 'type:int', 'min:1']
];
$jsonValidation = $request->validateJson($jsonRules);
if ($jsonValidation['valid']) {
addToCart($jsonValidation['data']);
}
Accessing Request Metadata
// Get the request method
if ($request->method() === 'POST') {
// ...
}
// Get the Authorization header
$token = $request->header('Authorization');
// Get the User-Agent
$userAgent = $request->server('HTTP_USER_AGENT');
// Get a cookie
$sessionId = $request->cookie('SESSION_ID');
// Check if it's an AJAX request
if ($request->isAjax()) {
// Return JSON response
}
File Uploads
Handle and validate file uploads securely.
$allowedTypes = ['image/jpeg', 'image/png'];
$maxSize = 2 * 1024 * 1024; // 2MB
$file = $request->validateFile('avatar', $allowedTypes, $maxSize);
if ($file) {
// File is valid and sanitized
$destination = '/uploads/' . $file['name'];
move_uploaded_file($file['tmp_name'], $destination);
echo 'File uploaded successfully!';
} else {
// Handle invalid file (wrong type, too large, etc.)
echo 'Invalid file upload.';
}
Last updated