WordPress에서 다른 PHP 프레임워크 또는 CMS로 앱 마이그레이션
Gato GraphQL이 제공하는 GraphQL 스키마에는 WordPress 데이터를 가져오는 필드들이 포함되어 있습니다: 게시물, 사용자, 댓글, 태그, 카테고리 등.
PHP 리졸버가 WordPress 데이터를 가져오는 코드는 WordPress에 의존하며, 해당 코드는 WordPress 이외의 앱에서는 실행할 수 없습니다.
그러나 Gato GraphQL에서는 이러한 리졸버 각각이 2개의 패키지로 구현되어 있습니다:
- "바닐라" PHP 패키지: 모든 범용 코드를 포함
- WordPress 전용 패키지: 해당 리졸버를 처리하는 WordPress 메서드의 실제 호출을 포함
예를 들어, 다음 GraphQL 쿼리에서:
{
posts {
id
title
}
}...게시물을 가져오는 로직은 다음으로 구성됩니다:
Root.posts필드: 범용posts패키지에 존재합니다get_posts메서드를 통한 WordPress용 처리: WordPress 전용posts-wp패키지에 존재합니다.
비WordPress/WordPress 패키지 간 코드 분할은 약 80/20%로, 코드의 80%는 다른 프레임워크/CMS에서도 재사용 가능하며, 재구현이 필요한 코드는 20%에 불과합니다.
또한, Gato GraphQL의 모든 기능은 모듈을 통해 제공되며, 모듈은 자유롭게 활성화 및 비활성화할 수 있습니다.

모듈은 보안 목적으로 구현된 기능입니다: 공개 API에서 사용자 데이터를 노출할 필요가 없는 경우, Users 모듈을 비활성화하면 해당 필드(예: Root.users)가 스키마에 추가되지 않습니다.
모듈은 기반이 되는 PHP 패키지에 직접 매핑됩니다. 따라서 Gato GraphQL을 독립형 앱으로 실행할 때, 필요한 모듈/패키지만 선택적으로 로드하고 나머지는 로드하지 않을 수 있습니다.
예를 들어, 애플리케이션이 게시물, 카테고리, 태그 데이터만 출력하는 경우, 로드해야 하는 것은 posts-wp, categories-wp, tags-wp 패키지(및 해당 의존성)뿐입니다.
그런 다음 WordPress에서 (예: Laravel이나 Symfony로) 마이그레이션할 때, 새 프레임워크/CMS를 위해 재구현이 필요한 것은 그 3개의 WordPress 전용 패키지뿐이며, 그 외에는 아무것도 필요하지 않습니다.