-
Notifications
You must be signed in to change notification settings - Fork 0
Curl
Gérits Aurélien edited this page Feb 13, 2026
·
1 revision
La classe CURL est un client HTTP complet et moderne conçu pour PHP 8.2+. Elle simplifie les échanges de données complexes : requêtes API JSON, téléchargements de fichiers (streaming), et envois de formulaires Multipart (uploads). Elle utilise l'objet CurlHandle pour une gestion efficace des ressources.
Namespace : Magepattern\Component\HTTP\CURL
| Méthode | Paramètres | Retour | Description |
|---|---|---|---|
| request() | string $meth, string $url, $body, array $opt | string|bool | Moteur central d'exécution des requêtes. |
| requestJSON() | string $meth, string $url, array $data, bool $decode | array|string|bool | Envoie et reçoit des données formatées en JSON automatiquement. |
| get() | string $url, array $opt | string|bool | Raccourci pour une requête HTTP GET. |
| post() | string $url, $data, array $opt | string|bool | Raccourci pour une requête HTTP POST. |
| download() | string $url, string $dest | bool | Télécharge un fichier distant directement sur le disque (Streaming). |
| upload() | string $url, string $field, string $path, array $extra | string|bool | Envoie un fichier physique (Multipart) via CURLFile. |
| setProxy() | string $host, int $port, ?string $auth | self | Configure un serveur proxy pour les requêtes à venir. |
| addHeader() | string $key, string $val | self | Ajoute un en-tête HTTP personnalisé (ex: Authorization). |
| isDomainAvailable() | string $url, bool $ssl | bool | Vérifie rapidement si un domaine répond (Requête HEAD). |
Usage de base
- Appel API JSON (Le plus "Confort") La méthode requestJSON s'occupe de l'encodage, des en-têtes Content-Type et du décodage de la réponse.
use Magepattern\Component\HTTP\CURL;
$api = new CURL();
$response = $api->requestJSON('POST', 'https://api.site.com/v1/user', [
'name' => 'Aurelien',
'role' => 'admin'
]);
if ($response) {
echo "ID créé : " . $response['id'];
}- Téléchargement de fichier sécurisé Contrairement à une lecture en mémoire, download() écrit le flux directement dans un fichier pour économiser la RAM.
$curl = new CURL();
$success = $curl->download('https://url.com/gros-fichier.zip', __DIR__ . '/downloads/file.zip');CurlHandle (PHP 8) : La classe utilise les nouveaux objets CurlHandle pour une destruction propre des connexions.
Streaming : Le téléchargement via CURLOPT_FILE évite les dépassements de mémoire (memory_limit) sur les gros fichiers.
SSL : Par défaut, la classe est configurée pour suivre les redirections (CURLOPT_FOLLOWLOCATION) et respecter les timeouts de connexion.
$curl = new CURL();
// Ajout d'une clé d'authentification personnalisée dans le header
$curl->addHeader('X-API-KEY', '123456');
// Envoi d'une image avec des paramètres supplémentaires
$result = $curl->upload(
'https://api.storage.com/upload',
'avatar',
'/tmp/photo_profil.jpg',
['user_id' => 42]
);