Interactie met de GraphQL API
Interactie met de GraphQL APIJe app migreren van WordPress naar een ander PHP-framework of CMS

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:

  1. Een "vanilla" PHP-pakket, dat alle generieke code bevat
  2. 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:

  1. Het Root.posts-veld: Dit bevindt zich in het generieke posts-pakket
  2. De afhandeling ervan voor WordPress via de get_posts-methode: Dit bevindt zich in het WordPress-specifieke posts-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.

Schema-modules
Schema-modules

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.