Guzzle لـ PHP: دليل شامل مع أمثلة

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

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

ابدأ الدورة

ما هو Guzzle ولماذا تحتاجه؟

\n\n

Guzzle هي مكتبة PHP قوية للعمل مع طلبات HTTP. توفر واجهة سهلة لإرسال طلبات HTTP، ومعالجة الردود، والعمل مع الكوكيز والجلسات والطلبات غير المتزامنة وغير ذلك الكثير. إذا كنت تعمل مع API، أو تقوم بتجميع صفحات الويب، أو ببساطة تتفاعل مع خوادم بعيدة، فإن Guzzle سيكون أداة لا غنى عنها لك.

\n\n

الإمكانيات الرئيسية لـ Guzzle:

\n
    \n
  • دعم جميع طرق HTTP (GET، POST، PUT، DELETE، PATCH، HEAD، OPTIONS)
  • \n
  • العمل مع الرؤوس (headers)، جسم الطلب، معلمات URL
  • \n
  • دعم الطلبات غير المتزامنة (قائمة على Promise)
  • \n
  • معالجة تلقائية لإعادة التوجيه (redirects)
  • \n
  • العمل مع الكوكيز والجلسات
  • \n
  • Middleware لتوسيع الوظائف
  • \n
  • دعم PSR-7 (واجهات PSR-7 لرسائل HTTP)
  • \n
  • اختبار ومحاكاة بسيطة
  • \n
\n\n

يُستخدم Guzzle في مشاريع كبيرة مثل Laravel (عميل HTTP مدمج)، Drupal، Magento والعديد من المشاريع الأخرى.

\n\n

التثبيت

\n\n

يتم تثبيت Guzzle عبر Composer - مدير الحزم لـ PHP. إذا لم يكن لديك Composer بعد، قم بتثبيته من الموقع الرسمي getcomposer.org.

\n\n

نفّذ الأمر في الطرفية في جذر مشروعك:

\n\n
composer require guzzlehttp/guzzle
\n\n

بعد التثبيت، قم بتضمين محمل Composer التلقائي في ملف PHP الخاص بك:

\n\n
require 'vendor/autoload.php';
\n\n

الآن أنت جاهز للعمل مع Guzzle.

\n\n

بداية سريعة

\n\n

لنرسل طلب GET بسيط إلى API عام ونحصل على البيانات بتنسيق JSON.

\n\n
<?php\nrequire 'vendor/autoload.php';\n\nuse GuzzleHttp\\Client;\n\n$client = new Client();\n$response = $client->get('https://jsonplaceholder.typicode.com/posts/1');\n\n// الحصول على جسم الرد\n$body = $response->getBody();\n\n// تحويل JSON إلى مصفوفة\n$data = json_decode($body, true);\n\necho "Title: " . $data['title'] . "\\n";\necho "Body: " . $data['body'] . "\\n";\n?>
\n\n

يوضح هذا المثال مدى سهولة الحصول على البيانات من خادم بعيد. يقوم Guzzle تلقائيًا بمعالجة الرؤوس ورموز الحالة وجسم الرد.

\n\n

الطرق والوظائف الأساسية

\n\n

1. get() — طلب GET

\n

ما يفعله: يرسل طلب HTTP GET إلى URL المحدد. يُستخدم للحصول على البيانات.

\n

المعلمات:

\n
    \n
  • $uri (string) — URL الطلب
  • \n
  • $options (array) — مصفوفة من الخيارات (الرؤوس، معلمات query، مهلات، إلخ.)
  • \n
\n

مثال:

\n
<?php\n$client = new GuzzleHttp\\Client();\n$response = $client->get('https://api.github.com/users/octocat', [\n    'headers' => [\n        'Accept' => 'application/json',\n        'User-Agent' => 'Guzzle-Demo'\n    ],\n    'query' => [\n        'page' => 1,\n        'per_page' => 10\n    ]\n]);\n\necho $response->getStatusCode(); // 200\necho $response->getBody();\n?>
\n\n

2. post() — طلب POST

\n

ما يفعله: يرسل طلب POST. يُستخدم لإنشاء موارد جديدة أو إرسال بيانات إلى الخادم.

\n

المعلمات:

\n
    \n
  • $uri (string) — URL الطلب
  • \n
  • $options (array) — مصفوفة من الخيارات (body، form_params، json، multipart، إلخ.)
  • \n
\n

مثال:

\n
<?php\n$client = new GuzzleHttp\\Client();\n$response = $client->post('https://jsonplaceholder.typicode.com/posts', [\n    'json' => [\n        'title' => 'منشور جديد',\n        'body' => 'محتوى المنشور',\n        'userId' => 1\n    ]\n]);\n\necho $response->getStatusCode(); // 201\n$data = json_decode($response->getBody(), true);\nprint_r(                    

توصيات