Skip to content
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

Liste des méthodes

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

  1. 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'];
}
  1. 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');

Sécurité & Performance

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.

Exemple concret : Envoi de fichier (Upload)

$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]
);

Clone this wiki locally