Migrando sua aplicação do WordPress para outro framework ou CMS PHP
O schema GraphQL fornecido pelo Gato GraphQL contém campos para buscar dados do WordPress: posts, usuários, comentários, tags, categorias, etc.
O código nos resolvers PHP que busca dados do WordPress depende do WordPress; esse código não pode ser executado em uma aplicação não-WordPress.
No entanto, o Gato GraphQL implementa cada um desses resolvers por meio de 2 pacotes:
- Um pacote PHP "vanilla", contendo todo o código genérico
- Um pacote específico para WordPress, contendo as invocações reais aos métodos do WordPress que satisfazem aquele resolver
Por exemplo, nesta query GraphQL:
{
posts {
id
title
}
}...a lógica para buscar os posts é composta por:
- O campo
Root.posts: reside no pacote genéricoposts - Sua resolução para WordPress por meio do método
get_posts: reside no pacote específico para WordPressposts-wp.
A divisão do código entre os pacotes não-WordPress/WordPress é de aproximadamente 80/20%, o que significa que 80% do código é reutilizável com outro framework/CMS, e apenas 20% do código precisaria ser reimplementado.
Além disso, toda a funcionalidade do Gato GraphQL é fornecida por meio de módulos, e os módulos podem ser habilitados/desabilitados conforme necessário.

Módulos é uma funcionalidade implementada para fins de segurança: se você não precisa expor dados de usuários na sua API pública, pode desabilitar o módulo Users, e os campos correspondentes (como Root.users) nunca serão adicionados ao schema.
Os módulos são mapeados diretamente para os pacotes PHP subjacentes. Portanto, ao executar o Gato GraphQL como uma aplicação standalone, podemos carregar seletivamente os módulos/pacotes de que precisamos, e nenhum dos outros.
Por exemplo, se sua aplicação exibe apenas dados de posts, categorias e tags, então apenas os pacotes posts-wp, categories-wp e tags-wp (junto com suas dependências) precisam ser carregados.
Assim, ao migrar do WordPress (por exemplo, para Laravel ou Symfony), apenas esses 3 pacotes específicos do WordPress precisariam ser reimplementados para o novo framework/CMS, e nada mais.