与 GraphQL API 交互
与 GraphQL API 交互将您的应用从 WordPress 迁移到其他 PHP 框架或 CMS

将您的应用从 WordPress 迁移到其他 PHP 框架或 CMS

Gato GraphQL 提供的 GraphQL 模式包含用于获取 WordPress 数据的字段:文章、用户、评论、标签、分类等。

PHP 解析器中获取 WordPress 数据的代码依赖于 WordPress,该代码无法在非 WordPress 应用中运行。

然而,Gato GraphQL 将这些解析器分别通过 2 个软件包来实现:

  1. 一个「原生」PHP 包,包含所有通用代码
  2. 一个 WordPress 专用包,包含满足该解析器所需的实际 WordPress 方法调用

例如,对于以下 GraphQL query:

{
  posts {
    id
    title
  }
}

...获取文章的逻辑由以下部分组成:

  1. Root.posts 字段:位于通用的 posts 软件包
  2. 通过 get_posts 方法实现的 WordPress 解析:位于 WordPress 专用的 posts-wp 软件包中。

非 WordPress/WordPress 软件包之间的代码分割约为 80/20%,这意味着 80% 的代码可在其他框架/CMS 中复用,只有 20% 的代码需要重新实现

此外,Gato GraphQL 的所有功能都通过模块提供,模块可以随意启用或禁用。

模式模块
模式模块

模块是出于安全目的而实现的功能:如果您不需要在公共 API 中暴露用户数据,则可以禁用 Users 模块,相应的字段(如 Root.users)将不会被添加到模式中。

模块直接映射到底层 PHP 软件包。 因此,当以独立应用方式运行 Gato GraphQL 时,我们可以选择性地加载所需的模块/软件包,而不加载其他任何内容。

例如,如果您的应用只输出文章、分类和标签的数据,则只需加载 posts-wpcategories-wptags-wp 软件包(及其依赖项)。

之后,当从 WordPress 迁移(例如迁移到 Laravel 或 Symfony)时,只需为新框架/CMS 重新实现这 3 个 WordPress 专用软件包,其他任何内容都无需更改。