GraphQL in PHP: Vollständiger Leitfaden zur Bibliothek webonyx/graphql-php

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

GraphQL-Bibliothek PHP: webonyx/graphql-php



GraphQL ist eine moderne Abfragesprache für APIs, entwickelt von Facebook. In PHP ist webonyx/graphql-php eine der beliebtesten und ausgereiftesten Bibliotheken zur Implementierung von GraphQL. Diese Bibliothek ermöglicht es Entwicklern, flexible, typisierte und effiziente APIs zu erstellen, die es Clients ermöglichen, nur die benötigten Daten anzufordern.



In diesem Artikel werden wir im Detail betrachten, wie man webonyx/graphql-php in Ihrem PHP-Projekt installiert, konfiguriert und verwendet. Die Bibliothek implementiert die offizielle GraphQL-Spezifikation (Juni 2018) vollständig und unterstützt alle modernen Funktionen: Abfragen (queries), Mutationen (mutations), Subscriptions (subscriptions), Interfaces, Unions und vieles mehr.



Installation und Konfiguration



Die Installation erfolgt über Composer. Öffnen Sie ein Terminal im Stammverzeichnis Ihres Projekts und führen Sie Folgendes aus:



composer require webonyx/graphql-php


Nach der Installation ist die Bibliothek einsatzbereit. Es ist keine minimale Konfiguration erforderlich – importieren Sie einfach die benötigten Klassen in Ihre PHP-Datei.



Hauptkomponenten der Bibliothek



Die Bibliothek besteht aus mehreren Schlüsselkomponenten, die miteinander interagieren:



  • Schema (Schema) – definiert die Datentypen und verfügbaren Operationen (Abfragen und Mutationen).
  • Typen (Types) – beschreiben die Datenstruktur (ObjectType, ScalarType, EnumType, InterfaceType, UnionType usw.).
  • Resolver (Resolvers) – Funktionen, die Daten für jedes Feld zurückgeben.
  • Executor (Executor) – verarbeitet die eingehende Anfrage und gibt das Ergebnis zurück.


Erstellen eines einfachen Schemas



Betrachten wir ein Beispiel für die Erstellung eines einfachen GraphQL-Schemas für die Arbeit mit Benutzern. Zuerst definieren wir den Typ User:



<?phpuse GraphQL\\Type\\Definition\\ObjectType;use GraphQL\\Type\\Definition\\Type;

$userType = new ObjectType([ 'name' => 'User', 'fields' => [ 'id' => Type::int(), 'name' => Type::string(), 'email' => Type::string(), 'age' => Type::int(), ],]);


Jetzt erstellen wir den Wurzeltyp für Abfragen Query, der eine Liste von Benutzern zurückgibt:



$queryType = new ObjectType([    'name' => 'Query',    'fields' => [        'users' => [            'type' => Type::listOf($userType),            'resolve' => function ($root, $args) {                // Hier normalerweise eine Datenbankabfrage                return [                    ['id' => 1, 'name' => 'Ivan Ivanov', 'email' => 'ivan@example.com', 'age' => 30],                    ['id' => 2, 'name' => 'Maria Petrova', 'email' => 'maria@example.com', 'age' => 25],                ];            },        ],        'user' => [            'type' => $userType,            'args' => [                'id' => Type::nonNull(Type::int()),            ],            'resolve' => function ($root, $args) {                // Benutzer nach ID suchen                $users = [                    1 => ['id' => 1, 'name' => 'Ivan Ivanov', 'email' => 'ivan@example.com', 'age' => 30],                    2 => ['id' => 2, 'name' => 'Maria Petrova', 'email' => 'maria@example.com', 'age' => 25],                ];                return $users[$args['id']] ?? null;            },        ],    ],]);


Zusammenführen in ein Schema und Ausführen einer Abfrage



Jetzt fassen wir alles in einem einzigen Schema zusammen und führen eine Testabfrage aus:



use GraphQL\\GraphQL;use GraphQL\\Schema;

$schema = new Schema([ 'query' => $queryType,]);

// Eingehende GraphQL-Abfrage (normalerweise per POST)$query = '{ users { id name em

Empfehlungen