Independencia del CMS
El servidor GraphQL subyacente en el que se basa Gato GraphQL es agnóstico respecto al CMS, por lo que puede funcionar con cualquier CMS o framework de PHP (no solo WordPress, sino también Laravel y Symfony).
Para lograr esta independencia del CMS, toda la funcionalidad que debe interactuar con el CMS se divide en 2 paquetes separados:
- Un paquete independiente del CMS, que contiene todo el código de negocio y los contratos para interactuar con el CMS que lo implemente, sea cual sea (por ejemplo: posts)
- Un paquete específico del CMS, que contiene la implementación de los contratos para un CMS concreto (por ejemplo: posts-wp, que implementa los contratos para WordPress)
De este modo, la mayor parte del código (alrededor del 90%) reside en el paquete independiente del CMS. Para portar la API a un CMS distinto (por ejemplo: de WordPress a Laravel), solo es necesario implementar el paquete específico del CMS (que representa cerca del 10% del código total).
Minimizar la cantidad de código que debe reimplementarse y evitar la duplicación de código entre paquetes son los principales criterios que determinan cómo se divide el código en paquetes.