netglue/prismic-client

Prismic.io 的 PHP API 客户端

1.10.0 2023-12-06 14:34 UTC

README

Stand With Ukraine

Build Status codecov Psalm Type Coverage Latest Stable Version Total Downloads

这是一个 Prismic.io 无头 CMS 的非官方 PHP 客户端。为了保持简单,这个库仅支持 API 的第 2 版,因此您必须确保以 https://my-repo.prismic.io/api/v2 的格式指定您的仓库 URL。

与其他 prismic 客户端几乎没有向后兼容性,因此这绝对不是即插即用的替代品。尽管如此,您会发现其中大部分仍然很相似。

功能

  • 使用 PSR-18 HTTP 客户端与 API 进行通信,因此没有依赖特定的客户端实现。该库依赖于您手动提供 HTTP 客户端或回退到 HTTPlug Discovery 以确定已可用的客户端。
  • 可选缓存。您可以选择使用可以为您缓存响应的 HTTP 客户端 如这个小美物,或者向命名构造函数提供 PSR 缓存池。
  • 在主接口中提供有用的方法来检索下一页/上一页分页结果集或合并所有分页结果到单个结果集。
  • 可预测且一致的异常,帮助您从错误条件中优雅地恢复。
  • 可迭代和可过滤的集合来表示 Slices、groups 和 RichText,这使得定位特定类型的内容变得非常简单。
  • 完全分离且可替换的 HTML 序列化。实际上,内容对象根本没有任何 atHtml()asText() 方法。有一个可调用的已发货 HTML 序列化器,但您可能不想使用它,而是直接在视图层中处理您的文档。
  • 轻松实现您自己的结果集和文档类型,替换默认的已发货实现。您有一个 'Case Study' 类型?将您的文档填充到 YourModel\CaseStudy 对象中,以便您可以在视图和其他地方构建一个健壮的内容模型。
  • 几乎没有任何可空性……所有集合都保证返回类型为 Prismic\Fragment,这使得您更容易测试特定类型或其 emptiness

限制

  • 如前所述,仅支持 API 的第 2 版
  • 不支持实验 (A/B 测试),因为 Prismic 本身尚未实施此功能,因此实现一个无法使用的功能没有意义 (悲伤的脸) - 话虽如此,如果 A/B 测试在未来再次成为现实,它将是首要任务。
  • 没有内置缓存 (也请参阅“功能”)

安装

使用 composer 安装: composer require netglue/prismic-client

您还需要一个 PSR-18 HTTP 客户端实现,其中有很多,例如

要使用来自 php-http 的 curl 适配器,请执行 composer require php-http/curl-client

文档

文档正在制作中,托管在公共 prismic 仓库中 (显然!)

您可以通过克隆库、转到源并执行 composer install,然后执行 composer serve 来查看文档。这将启动 PHP 内置服务器在 http://127.0.0.1:8080 上,显示文档。

示例与实例

请查看 ./samples 目录;那里包含用于渲染文档和示例的文档浏览器,以及用于设置水化结果集、链接解析器实现和其他内容的示例。

值得一提的是,文档浏览器还支持预览功能,您可以将 http://127.0.0.1/preview 添加为 Prismic 仓库中的预览目标,以便实时预览更改。

测试

一旦您已经克隆了库并安装了依赖项,就可以运行单元测试。默认情况下会跳过烟雾测试,但您可以通过在 test/config/config.php 中编写配置文件 (其中也包含了一个示例) 或通过设置几个环境变量来针对单个仓库运行烟雾测试。

export PRISMIC_REPO="https://my-repo.prismic.io/api/v2"
export PRISMIC_TOKEN="Some access token or not"
vendor/bin/phpunit

其他客户端

官方工具包可以在 prismicio/php-kit 找到。

官方工具包的另一个已废弃的分支可以在 netglue/prismic-php-kit 找到。废弃分支的原因是希望从一张白纸开始,利用最新的 PSRs(PHP 标准推荐)进行 HTTP 工厂和客户端开发,完全将 HTML 序列化过程与内容模型分离,并提供更多灵活的方法来将内容模型水化为领域对象 (或者不是这样!)

许可证

MIT 许可证.