🧱 1. cURL — это базовый инструмент
cURL — это низкоуровневая библиотека (и утилита), написанная на C,
которая умеет делать HTTP-запросы: GET, POST, PUT, DELETE и т.д.
📦 Она есть практически в каждой ОС и встроена в PHP.
Пример «чистого» cURL в PHP:
$ch = curl_init('https://example.com');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
Но это выглядит громоздко, неудобно и сложно масштабировать.
⚙️ 2. Guzzle — это современная PHP-библиотека на базе cURL
Guzzle — это “обёртка” над cURL, которая делает работу с HTTP-запросами удобной и объектно-ориентированной.
Ты можешь просто написать:
$client = new \GuzzleHttp\Client();
$response = $client->get('https://example.com');
echo $response->getBody();
И под капотом Guzzle уже:
- вызывает
cURL, - управляет заголовками, cookie, редиректами, SSL, таймаутами и т.д.,
- умеет работать асинхронно (через промисы),
- даёт единый интерфейс для работы с API.
🧰 3. Laravel Http — это обёртка над Guzzle
Когда ты пишешь в Laravel:
Http::get('https://example.com');
// или
Http::withHeaders([...])->post(...);
— Laravel на самом деле использует Guzzle внутри.
То есть цепочка такая:
Http (Laravel)
↓
Guzzle (удобная PHP-обёртка)
↓
cURL (низкоуровневый механизм HTTP)
↓
TCP/SSL (сетевые слои)
📋 Вывод
- 🧩 cURL — базовый инструмент на уровне PHP/С.
- 🧠 Guzzle — библиотека, которая делает cURL “человечной”.
- ⚡ Laravel Http — ещё более удобный слой поверх Guzzle.