Migrar tu aplicación de WordPress a otro framework o CMS de PHP
El esquema GraphQL proporcionado por Gato GraphQL contiene campos para obtener datos de WordPress: entradas, usuarios, comentarios, etiquetas, categorías, etc.
El código en los resolvers de PHP que obtiene datos de WordPress depende de WordPress; ese código no puede ejecutarse en una aplicación que no sea WordPress.
Sin embargo, Gato GraphQL tiene cada uno de estos resolvers implementados mediante 2 paquetes:
- Uno de PHP "vanilla", que contiene todo el código genérico
- Uno específico de WordPress, que contiene las invocaciones reales a los métodos de WordPress que satisfacen ese resolver
Por ejemplo, en esta consulta GraphQL:
{
posts {
id
title
}
}...la lógica para obtener las entradas se compone de:
- El campo
Root.posts: vive en el paquete genéricoposts - Su resolución para WordPress mediante el método
get_posts: vive en el paquete específico de WordPressposts-wp.
La división del código entre paquetes no-WordPress/WordPress es de alrededor del 80/20%, lo que significa que el 80% del código es reutilizable con otro framework/CMS, y solo el 20% del código necesitaría ser reimplementado.
Además, toda la funcionalidad en Gato GraphQL se entrega mediante módulos, y los módulos pueden habilitarse/deshabilitarse a voluntad.

Modules es una característica implementada por motivos de seguridad: si no necesitas exponer datos de usuario en tu API pública, entonces puedes deshabilitar el módulo Users, y los campos correspondientes (como Root.users) nunca se añadirán al esquema.
Los módulos están directamente mapeados a paquetes PHP subyacentes. Como tal, cuando se ejecuta Gato GraphQL como una app independiente, podemos cargar selectivamente aquellos módulos/paquetes que necesitamos, y ninguno de los otros.
Por ejemplo, si tu aplicación solo imprime datos de entradas, categorías y etiquetas, entonces solo es necesario cargar los paquetes posts-wp, categories-wp y tags-wp (junto con sus dependencias).
Entonces, al migrar lejos de WordPress (digamos, a Laravel, o Symfony), solo esos 3 paquetes específicos de WordPress tendrían que ser reimplementados para el nuevo framework/CMS, y nada más.