Миграция приложения с WordPress на другой PHP-фреймворк или CMS
Схема GraphQL, предоставляемая Gato GraphQL, содержит поля для получения данных WordPress: публикации, пользователи, комментарии, теги, категории и т. д.
Код PHP-резолверов, получающих данные WordPress, зависит от WordPress; этот код не может выполняться в приложении, не основанном на WordPress.
Тем не менее, в Gato GraphQL каждый из этих резолверов реализован через 2 пакета:
- «Ванильный» PHP-пакет, содержащий весь универсальный код
- WordPress-специфичный пакет, содержащий реальные вызовы методов WordPress, которые обслуживают данный резолвер
Например, в следующем GraphQL query:
{
posts {
id
title
}
}...логика получения публикаций состоит из:
- Поля
Root.posts: оно находится в универсальном пакетеposts - Его разрешения для WordPress через метод
get_posts: оно находится в WordPress-специфичном пакетеposts-wp.
Разделение кода между не-WordPress и WordPress-пакетами составляет примерно 80/20%, что означает: 80% кода можно повторно использовать с другим фреймворком/CMS, и лишь 20% кода потребует повторной реализации.
Кроме того, весь функционал Gato GraphQL поставляется в виде модулей, и модули можно включать и отключать по желанию.

Modules — это функциональность, реализованная в целях безопасности: если вам не нужно раскрывать данные пользователей в публичном API, вы можете отключить модуль Users, и соответствующие поля (например, Root.users) никогда не будут добавлены в схему.
Модули напрямую соответствуют базовым PHP-пакетам. Поэтому при запуске Gato GraphQL как автономного приложения можно выборочно загружать только необходимые модули/пакеты, не загружая остальные.
Например, если ваше приложение выводит только данные публикаций, категорий и тегов, то нужно загрузить лишь пакеты posts-wp, categories-wp и tags-wp (вместе с их зависимостями).
Таким образом, при миграции с WordPress (скажем, на Laravel или Symfony) потребуется повторно реализовать только эти 3 WordPress-специфичных пакета для нового фреймворка/CMS — и ничего больше.