Deine Anwendung von WordPress zu einem anderen PHP-Framework oder CMS migrieren
Das von Gato GraphQL bereitgestellte GraphQL-Schema enthält Felder zum Abrufen von WordPress-Daten: Beiträge, Nutzer, Kommentare, Tags, Kategorien usw.
Der Code in den PHP-Resolvern, der WordPress-Daten abruft, ist von WordPress abhängig; dieser Code kann in einer Nicht-WordPress-Anwendung nicht ausgeführt werden.
Gato GraphQL implementiert jedoch jeden dieser Resolver über 2 Pakete:
- Ein "vanilla" PHP-Paket, das den gesamten generischen Code enthält
- Ein WordPress-spezifisches Paket, das die eigentlichen Aufrufe der WordPress-Methoden enthält, die diesen Resolver erfüllen
Zum Beispiel in dieser GraphQL-Query:
{
posts {
id
title
}
}...setzt sich die Logik zum Abrufen von Beiträgen zusammen aus:
- Dem Feld
Root.posts: Es befindet sich im generischen Paketposts - Seiner Auflösung für WordPress über die Methode
get_posts: Sie befindet sich im WordPress-spezifischen Paketposts-wp.
Die Aufteilung des Codes zwischen Nicht-WordPress/WordPress-Paketen beträgt etwa 80/20 %, was bedeutet, dass 80 % des Codes mit einem anderen Framework/CMS wiederverwendbar ist, und nur 20 % des Codes neu implementiert werden müsste.
Außerdem wird die gesamte Funktionalität in Gato GraphQL über Module bereitgestellt, und Module können nach Belieben aktiviert/deaktiviert werden.

Module sind eine Funktion, die aus Sicherheitsgründen implementiert wurde: Wenn du keine Nutzerdaten in deiner öffentlichen API bereitstellen musst, kannst du das Users-Modul deaktivieren, und die entsprechenden Felder (wie Root.users) werden dem Schema nie hinzugefügt.
Module sind direkt den zugrundeliegenden PHP-Paketen zugeordnet. Wenn Gato GraphQL als eigenständige Anwendung läuft, können wir daher selektiv die benötigten Module/Pakete laden und alle anderen weglassen.
Wenn deine Anwendung beispielsweise nur Daten für Beiträge, Kategorien und Tags ausgibt, müssen nur die Pakete posts-wp, categories-wp und tags-wp (zusammen mit ihren Abhängigkeiten) geladen werden.
Wenn du dann von WordPress wegmigrierst (z. B. zu Laravel oder Symfony), müssten nur diese 3 WordPress-spezifischen Pakete für das neue Framework/CMS neu implementiert werden, und nichts sonst.