عميل HTTP لـ PHP: أفضل المكتبات للعمل مع API
تطوير الويب الحديث بلغة PHP نادرًا ما يخلو من إرسال طلبات HTTP. سواء كان التكامل مع واجهات برمجة التطبيقات الخارجية، أو تحميل الملفات البعيدة، أو العمل مع webhooks - ستحتاج إلى عميل HTTP موثوق. في هذه المقالة، سنستعرض أفضل المكتبات لـ PHP التي ستساعدك على العمل بكفاءة مع بروتوكول HTTP.
1. Guzzle - ملك عملاء HTTP
Guzzle هي مكتبة PHP الأكثر شيوعًا للعمل مع HTTP. توفر واجهة سهلة لإرسال الطلبات، ودعم PSR-7 (واجهات رسائل HTTP)، والطلبات غير المتزامنة، والبرمجيات الوسيطة (middleware).
التثبيت
composer require guzzlehttp/guzzleمثال على الاستخدام
<?phprequire 'vendor/autoload.php';
use GuzzleHttp\\Client;
$client = new Client([ 'base_uri' => 'https://api.example.com', 'timeout' => 5.0,]);
$response = $client->request('GET', '/users', [ 'headers' => [ 'Authorization' => 'Bearer your-token', 'Accept' => 'application/json', ], 'query' => ['limit' => 10]]);
$body = $response->getBody();$data = json_decode($body, true);print_r($data);?>المزايا
- سهولة الاستخدام: واجهة برمجة تطبيقات بديهية
- عدم التزامن: دعم Promises والطلبات المتزامنة
- البرمجيات الوسيطة (Middleware): سهولة توسيع الوظائف (تسجيل، تخزين مؤقت)
- التوافق مع PSR-7: يعمل مع أي مكتبات PSR-7
2. cURL - الكلاسيكي الأصيل
cURL هو إضافة PHP توفر وصولاً مباشرًا إلى libcurl. إنها الطريقة الأكثر انخفاضًا في المستوى والأسرع لإرسال طلبات HTTP، ولكنها تتطلب المزيد من الكود.
مثال على الاستخدام
<?php$ch = curl_init();
curl_setopt_array($ch, [ CURLOPT_URL => 'https://api.example.com/users', CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Authorization: Bearer your-token', 'Content-Type: application/json', ], CURLOPT_TIMEOUT => 5,]);
$response = curl_exec($ch);$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);curl_close($ch);
if ($httpCode === 200) { $data = json_decode($response, true); print_r($data);} else { echo "خطأ: HTTP $httpCode";}?>المزايا
- أقصى أداء: استدعاء مباشر لوظائف C
- المرونة: تحكم كامل في كل معلمة من معلمات الطلب
- دعم مدمج: متوفر في معظم تثبيتات PHP
3. Symfony HttpClient - حديث وقوي
Symfony HttpClient هو مكون من إطار العمل Symfony يمكن استخدامه بشكل منفصل أيضًا. يوفر واجهة برمجة تطبيقات نظيفة موجهة للكائنات ويدعم الطلبات غير المتزامنة.
التثبيت
composer require symfony/http-clientمثال على الاستخدام
<?phprequire 'vendor/autoload.php';
use Symfony\\Component\\HttpClient\\HttpClient;
$client = HttpClient::create([ 'base_uri' => 'https://api.example.com', 'headers' => [ 'Authorization' => 'Bearer your-token', ],]);
$response = $client->request('GET', '/users', [ 'query' => ['limit' => 10],]);
$statusCode = $response->getStatusCode();$content = $response->getContent();$data = $response->toArray();
print_r($data);?>المزايا
- التوافق مع PSR-18: يتوافق مع معيار عملاء HTTP
- التدفقات غير المتزامنة: عمل فعال مع الردود الكبيرة