عميل HTTP لـ PHP: Guzzle

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

ما هو Guzzle؟

Guzzle هي مكتبة PHP قوية وشائعة للعمل مع طلبات HTTP. توفر واجهة سهلة لإرسال طلبات GET و POST و PUT و DELETE وغيرها، ومعالجة الردود وإدارة الجلسات. تعتبر Guzzle المعيار الفعلي للعمل مع HTTP في مجتمع PHP.

لماذا نحتاج Guzzle؟

على عكس دوال PHP المدمجة مثل file_get_contents() أو curl، تقدم Guzzle نهجًا موجهًا للكائنات، وإدارة تلقائية لملفات تعريف الارتباط (cookies)، ودعم التدفقات، والطلبات غير المتزامنة، ومعالجة مريحة للأخطاء. المكتبة مثالية للتكامل مع REST API، واستخراج بيانات الويب، وتحميل الملفات، والعمل مع OAuth.

التثبيت

يتم التثبيت عبر Composer:

composer require guzzlehttp/guzzle

تأكد من تثبيت PHP 8.1 أو أعلى (للإصدارات الأخيرة).

الوظائف الأساسية

  • إرسال الطلبات: GET, POST, PUT, DELETE, PATCH وطرق أخرى.
  • نقل البيانات بشكل تدفقي: العمل مع الملفات الكبيرة دون تحميلها في الذاكرة.
  • الطلبات غير المتزامنة: إرسال عدة طلبات بالتوازي باستخدام Promises.
  • Middleware: اعتراض وتعديل الطلبات/الردود (تسجيل، تخزين مؤقت، مصادقة).
  • معالجة الأخطاء: استثناءات مفصلة لحالات HTTP المختلفة.
  • جلسات Cookie: حفظ وإرسال cookies تلقائيًا.

مثال كود

require 'vendor/autoload.php';

use GuzzleHttp\\Client;

$client = new Client([ 'base_uri' => 'https://api.example.com', 'timeout' => 10.0,]);

// طلب GET مع معاملات$response = $client->request('GET', '/users', [ 'query' => ['page' => 1, 'limit' => 10]]);

echo $response->getStatusCode(); // 200echo $response->getBody(); // رد JSON

// طلب POST مع JSON$response = $client->post('/users', [ 'json' => [ 'name' => 'John', 'email' => 'john@example.com' ]]);

// طلب غير متزامن$promise = $client->getAsync('/data');$promise->then( function ($response) { echo 'Done: ' . $response->getStatusCode(); }, function ($exception) { echo 'Error: ' . $exception->getMessage(); });$promise->wait();

متى تستخدم Guzzle؟

يوصى باستخدام Guzzle لأي مشاريع تتطلب التفاعل مع خدمات HTTP الخارجية: بنية الخدمات المصغرة، عملاء REST API (GitHub, Stripe, Telegram)، تحليل صفحات الويب، وأتمتة تحميل البيانات. إذا كنت تكتب بلغة PHP وتعمل مع HTTP، فيجب أن يكون Guzzle خيارك الأول.

الخلاصة

Guzzle هي مكتبة ناضجة، موثقة جيدًا، ومدعومة بنشاط. إنها تبسط العمل مع HTTP، مما يجعل الكود أكثر نظافة وموثوقية. قم بتثبيتها عبر Composer وابدأ في استخدامها اليوم.

توصيات