Interagindo com a API GraphQL
Interagindo com a API GraphQLMigrando sua aplicação do WordPress para outro framework ou CMS PHP

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:

  1. Um pacote PHP "vanilla", contendo todo o código genérico
  2. 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:

  1. O campo Root.posts: reside no pacote genérico posts
  2. Sua resolução para WordPress por meio do método get_posts: reside no pacote específico para WordPress posts-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 do schema
Módulos do schema

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.