GraphQL API مع PHP: دليل خطوة بخطوة للمبتدئين

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

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

ابدأ الدورة

مقدمة في GraphQL و PHP

GraphQL هي لغة استعلام لواجهات API وبيئة تشغيل لتنفيذ هذه الاستعلامات مع البيانات الموجودة. على عكس REST، حيث تحصل على هيكل استجابة ثابت، تسمح GraphQL للعميل بطلب البيانات التي يحتاجها فقط. وهذا يجعل API أكثر مرونة وكفاءة.

في هذا الدليل، سنقوم بإنشاء GraphQL API بسيط باستخدام PHP من الصفر. ستتعلم كيفية تثبيت المكتبات الضرورية، تعريف المخطط، كتابة المحللات، ومعالجة الاستعلامات. المقالة موجهة للمطورين المبتدئين الذين لديهم معرفة أساسية بـ PHP وقواعد البيانات (مثل MySQL أو SQLite).

سنستخدم مكتبة webonyx/graphql-php - وهي الحزمة الأكثر شيوعًا واستقرارًا لتطبيق GraphQL في PHP. في النهاية، ستتمكن من تشغيل خادم GraphQL الخاص بك وإرسال الاستعلامات إليه عبر أي عميل HTTP (مثل cURL أو Insomnia).



تثبيت وإعداد المشروع

الخطوة 1: إنشاء المشروع وتثبيت التبعيات

أولاً، سنقوم بإنشاء مجلد جديد للمشروع وتهيئة Composer:

mkdir graphql-php-tutorialcd graphql-php-tutorialcomposer init

ثم نقوم بتثبيت مكتبة webonyx/graphql-php:

composer require webonyx/graphql-php

سنحتاج أيضًا إلى خادم HTTP متوافق مع PSR-7. للتبسيط، سنستخدم خادم PHP المدمج ومكتبة guzzlehttp/psr7 للتعامل مع الطلبات والاستجابات:

composer require guzzlehttp/psr7


الخطوة 2: هيكل المشروع

أنشئ هيكل الملفات التالي:

  • index.php - نقطة الدخول للتطبيق
  • schema.graphql - ملف تعريف مخطط GraphQL
  • resolvers.php - ملف دوال المحللات
  • data.php - محاكاة قاعدة البيانات (مصفوفة بيانات)


تعريف مخطط GraphQL

الخطوة 3: كتابة المخطط

المخطط هو وصف لأنواع البيانات والعمليات المتاحة (الاستعلامات والتحولات). سننشئ مخططًا بسيطًا لإدارة قائمة الكتب. افتح ملف schema.graphql وأدخل الكود التالي:

type Book {    id: ID!    title: String!    author: String!    year: Int}

type Query { books: [Book] book(id: ID!): Book}

type Mutation { addBook(title: String!, author: String!, year: Int): Book deleteBook(id: ID!): Book}

هنا قمنا بتعريف:

  • Book - نوع بيانات يحتوي على الحقول id و title و author و year.
  • Query - عمليات جلب البيانات: قائمة بجميع الكتب وكتاب حسب المعرف.
  • Mutation - عمليات تعديل البيانات: إضافة وحذف كتاب.


الخطوة 4: إعداد البيانات والمحللات

أنشئ ملف data.php يحتوي على مصفوفة الكتب:

<?php$books = [    1 => ['id' => 1, 'title' => 'الحرب والسلام', 'author' => 'ليو تولستوي', 'year' => 1869],    2 => ['id' => 2, 'title' => 'الجريمة والعقاب', 'author' => 'فيودور دوستويفسكي', 'year' => 1866],];

الآن سنكتب المحللات في ملف resolvers.php. المحللات هي دوال تقوم بإرجاع البيانات لكل حقل في المخطط.

<?phprequire 'data.php';

function resolveBooks() { global $books; return array_values($books);}

function resolveBook($root, $args) { global $books; return $books[$args['id']] ?? null;}

function resolveAddBook($root, $args) { global $books; $newId = count($books) + 1; $newBook = [ 'id' => $newId, 'title' => $args['title'], 'author' => $args['author'], 'year' => $args['year'] ?? null ]; $books[$newId] = $newBook; return $newBook;}

function resolveDeleteBook($root, $args) { global $books;

المدونات

توصيات الكتب