HTTP-запросы

Класс Imhotep\Http\Request предоставляет удобный способ взаимодействия с текущим HTTP-запросом, включая получение данных пользователя, файлов, cookies и информации о запросе.

Получение экземпляра запроса

Для работы с текущим HTTP-запросом просто объявите тип Imhotep\Http\Request в методе контроллера. Imhotep автоматически внедрит текущий запрос:

use Imhotep\Http\Request;

class UserController
{
    public function store(Request $request)
    {
        // Работаем с запросом
        $method = $request->method();
    }
}
PHP

Поддержка стандарта PSR-7

Imhotep также поддерживает интерфейс PSR-7, поэтому вы можете использовать его в качестве типа:

use Psr\Http\Message\ServerRequestInterface;

Route::get('/', function (ServerRequestInterface $request) {
    // Работа с запросом через PSR-7
});
PHP

Информация о запросе

Метод запроса

Узнайте, каким методом был отправлен запрос:

// Получаем метод запроса
$method = $request->method(); // GET, POST, PUT и т.д.

// Проверяем метод
if ($request->isMethod('POST')) {
    // Это POST-запрос
}

// Проверяем несколько методов
if ($request->isMethod('PUT', 'PATCH')) {
    // Это PUT или PATCH запрос
}
PHP

Безопасное соединение (HTTPS)

Проверьте, использует ли запрос защищённое соединение:

if ($request->secure()) {
    // Запрос через HTTPS
}

// Альтернативный вариант
if ($request->scheme() === 'https') {
    // Также HTTPS
}
PHP

URL и путь запроса

Получите информацию о URL запроса:

// Пример запроса: https://example.com/user/profile?hidden=notifications

$root = $request->root();        // https://example.com
$host = $request->host();        // example.com
$port = $request->port();        // 80 или 443
$path = $request->path();        // /user/profile
$queryString = $request->queryString(); // hidden=notifications
$uri = $request->uri();          // /user/profile?hidden=notifications
PHP

Получение URL

Есть несколько способов получить URL запроса:

// Без query string
$url = $request->url(); 
// Результат: https://example.com/user/profile

// Добавить только заданные параметры
$url = $request->url(['section' => 'password']);
// Результат: https://example.com/user/profile?section=password

// С query string
$url = $request->fullUrl();
// Результат: https://example.com/user/profile?hidden=notifications

// Добавить параметры к query string
$url = $request->fullUrl(['from' => 'register']);
// Результат: https://example.com/user/profile?hidden=notifications&from=register

// Заменить параметры query string
$url = $request->fullUrl(['hidden' => 'none']);
// Результат: https://example.com/user/profile?hidden=none

// Добавить параметры и удалить старые из query string
$url = $request->fullUrl(['from' => 'register'], ['hidden']);
// Результат: https://example.com/user/profile?from=register
PHP

Что дальше?

Для более детальной информации о работе с различными частями запроса перейдите в соответствующие разделы: