Je app migreren van WordPress naar een ander PHP-framework of CMS
Het GraphQL-schema dat Gato GraphQL biedt, bevat velden om WordPress-data op te halen: posts, gebruikers, reacties, tags, categorieën, enz.
De code in de PHP-resolvers die WordPress-data ophalen is afhankelijk van WordPress; die code kan niet draaien in een niet-WordPress-applicatie.
Gato GraphQL implementeert elk van deze resolvers echter via 2 pakketten:
- Een "vanilla" PHP-pakket, dat alle generieke code bevat
- Een WordPress-specifiek pakket, dat de daadwerkelijke aanroepen naar WordPress-methoden bevat die die resolver afhandelen
In deze GraphQL-query bijvoorbeeld:
{
posts {
id
title
}
}...bestaat de logica voor het ophalen van posts uit:
- Het
Root.posts-veld: Dit bevindt zich in het generiekeposts-pakket - De afhandeling ervan voor WordPress via de
get_posts-methode: Dit bevindt zich in het WordPress-specifiekeposts-wp-pakket.
De code is verdeeld over niet-WordPress/WordPress-pakketten in een verhouding van circa 80/20%, wat betekent dat 80% van de code herbruikbaar is met een ander framework/CMS, en slechts 20% van de code opnieuw geïmplementeerd zou moeten worden.
Bovendien wordt alle functionaliteit in Gato GraphQL geleverd via modules, en modules kunnen naar wens worden in- of uitgeschakeld.

Modules is een functie die is geïmplementeerd voor beveiligingsdoeleinden: als je geen gebruikersdata hoeft bloot te stellen in je publieke API, kun je de Users-module uitschakelen, en de bijbehorende velden (zoals Root.users) worden nooit aan het schema toegevoegd.
Modules zijn direct gekoppeld aan de onderliggende PHP-pakketten. Wanneer je Gato GraphQL als standalone applicatie uitvoert, kun je daarom selectief die modules/pakketten laden die je nodig hebt, en geen van de andere.
Als je applicatie bijvoorbeeld alleen data voor posts, categorieën en tags weergeeft, hoeven alleen de pakketten posts-wp, categories-wp en tags-wp (samen met hun afhankelijkheden) te worden geladen.
Wanneer je daarna migreert van WordPress (bijvoorbeeld naar Laravel of Symfony), hoeven alleen die 3 WordPress-specifieke pakketten opnieuw te worden geïmplementeerd voor het nieuwe framework/CMS, en verder niets.