Ответ
Да, активно. В фреймворках объект Request — это абстракция над HTTP-запросом, которая предоставляет безопасный и удобный доступ к данным.
В Laravel это делается через dependency injection:
use IlluminateHttpRequest;
public function updateProfile(Request $request) {
// Валидация данных запроса
$validated = $request->validate([
'name' => 'required|string|max:255',
'email' => 'required|email',
'avatar' => 'nullable|image|max:2048'
]);
// Получение данных
$name = $request->input('name'); // или $validated['name']
$allInput = $request->all();
$hasFile = $request->hasFile('avatar');
// Работа с файлами
if ($request->hasFile('avatar')) {
$path = $request->file('avatar')->store('avatars', 'public');
}
// Определение типа запроса
if ($request->isMethod('post')) { /* ... */ }
if ($request->ajax()) { /* ... */ }
if ($request->wantsJson()) { /* ... */ }
}
В Symfony подход похожий, но с другим API:
use SymfonyComponentHttpFoundationRequest;
public function index(Request $request) {
$page = $request->query->getInt('page', 1); // GET-параметр с приведением к int
$content = json_decode($request->getContent(), true); // Для JSON-тела запроса
$locale = $request->getLocale(); // Работа с локализацией
}
Преимущества использования объекта Request перед суперглобальными массивами ($_GET, $_POST):
- Безопасность: Данные автоматически экранируются, есть методы для безопасного извлечения.
- Тестируемость: Можно легко создать мок-объект запроса с нужными данными для юнит-тестов.
- Единый интерфейс: Упрощает работу с данными, независимо от метода (GET, POST, PUT, JSON).
- Дополнительная функциональность: Удобные методы для работы с сессиями, куками, заголовками, определением IP-адреса клиента и т.д.